본문 바로가기
Backend/mybatis

[mybatis]resultMap 엘리먼트 - autoMapping 속성(컬럼명과 DTO파일 필드명 같을 때)

by sukii 2024. 3. 7.
반응형

2024.03.06 - [Java/mybatis] - [mybatis]수동 매핑 & resultMap 엘리먼트(컬럼명과 DTO파일 필드명 다를 때)

 

[mybatis]수동 매핑 & resultMap 엘리먼트(컬럼명과 DTO파일 필드명 다를 때)

resultType 속성을 사용하면 resultType 속성값으로 설정된 클래스로 객체를 생성하여 검색행의 컬럼값을 같은 이름의 객체 필드값으로 자동 저장하여 제공 - 자동 매핑 문제점 : 검색행의 컬럼명과 re

sukis.tistory.com

 

위 글에서 resultMap의 다른 속성들은 설명해놨음.

거기서 보던 예제로 계속 살펴보면, resultMap을 사용해 수동 매핑해줬었음⬇️

<!--autoMapping 안쓰고 수동매핑-->
<resultMap type="MyUser" id="myUserResultMap">
	<id column="user_id" property="userId"/>
	<result column="user_name" property="userName"/>
</resultMap>

<select id="selectUserList" resultMap="myUserResultMap">
	select user_id, user_name from myuser order by user_id
</select>

 

그런데 어차피 mybatis-config.xml 파일(XML 환경설정파일)에 setting엘리먼트를 사용하여 mapUnderscoreToCamelCase 

를 true로 설정해놨음. 그래서 자동으로 컬럼명이 CamelCase로 변경되어 컬럼명과 같아짐.

그렇다면 굳이 수동매핑을 안해도 됨! 

<!--autoMapping써서 자동매핑-->
<resultMap type="MyUser" id="myUserResultMap" autoMapping="true">
</resultMap>

<select id="selectUserList" resultMap="myUserResultMap">
	select user_id, user_name from myuser order by user_id
</select>

 

결과는 위에 수동매핑한거랑 똑같지만, resultMap 안에 하위 엘리먼트를 삭제할 수 있어서 코드가 더 간결해짐!!

반응형