[Back end] MyBatis reusltType & reusltMap 차이점
MyBatis를 사용하다 보면 간혹 헷갈리는 부분이다. resultType, resultMap을 상황에 따라 적절하게 사용해야 한다. 우선 MyBatis 공식 사이트에서 정의하고 있는 부분을 살펴보자.
resultType - 이 구문에 의해 리턴되는 기대타입의 패키지 경로를 포함한 전체 클래스명이나 별칭, collection인 경우 collection 타입 자체가 아닌 collection이 포함된 타입이 될 수 있다.
resultMap - 외부 resultMap의 참조명 결과맵은 MyBatis의 가장 강력한 기능이다.
이렇게 설명하고 있다. 확 와닿지 않는 문구이지 않는가? 다시 정리해보자.
resultType - 클래스명 전체 또는 Alias를 입력해야 한다. VO, DTO등의 객체를 담을 수 있는 클래스의 경로를 명시하여 사용하면 된다. 자동매핑되기 때문에 편리하지만 일부 제한이 있다.
<select id="selectUserInfo" resultType="com.xxx.xxx.xxx.UserVO">
...
</select>
<select id="selectUserCount" resultType="int">
...
</select>
resultMap - 개발자가 직접 POJO 클래스에 매핑하며, 번거롭지만 제한없이 사용가능하다.
<resultMap id="userMap" type="com.xxx.xxx.xxx.UserVO">
<result property="userId" column="USER_ID">
<result property="userName" column="USER_NAME">
....
</resultMap>
<select id="selectUserInfo" resultMap="userMap">
...
</select>