-
[MyBatis] resultMap 과 resultType (resultClass) 의 차이점개발/문제 해결 2019. 1. 16. 17:58
옆자리 친구가 뭔가 이상하다고 해서 모니터를 들여다봤더니
로컬 서버에 띄운 프로그램을 통해 실행한 쿼리의 결과는 0행인데
똑같은 쿼리를 DBMS 툴에서 실행하면 2행이 나오고 있었다.
대체 이게 왜 이러지??? 싶었는데 원인은 xml에서 쿼리를 선언할 때 resultMap을 지정해주지 않았기 때문
(xml에 select 문을 선언할 때는 output을 받아줄 객체를 꼭 선언해야 한다. 그게 resultMap 이든 뭐든...)
처음엔 resultClass 선언이 없어서 그런가 하고 그걸 추가했는데도 계속 값이 안 나와서 다른 문제인가 하고 삽질을 했다.
그러다가 또 하나 깨닫게 된 resultMap과 resultClass의 차이점 흐흑
(출처 : http://www.mybatis.org/mybatis-3/sqlmap-xml.html
http://sotddi.tistory.com/entry/parameterClass-parameterMap-resultClass-resultMap
https://okky.kr/article/178655
http://hyeonstorage.tistory.com/283)
Mybatis 공식 문서에서 보면
resultType The fully qualified class name or alias for the expected type that will be returned from this statement. Note that in the case of collections, this should be the type that the collection contains, not the type of the collection itself. Use resultType OR resultMap, not both. resultMap A named reference to an external resultMap. Result maps are the most powerful feature of MyBatis, and with a good understanding of them, many difficult mapping cases can be solved. Use resultMap OR resultType, not both. 요렇게 나온다. 내가 이해한 대로 정리하자면
resultType
- ibatis 에서 resultClass → mybatis 에서 resultType 으로 바뀜
- 클래스명 전체 또는 alias를 입력
즉 매핑하려는 자바 클래스의 전체 경로를 입력함
- 예 : com.test.Student 객체로 쿼리 실행 결과값을 받고자 할 때
<select id="selectTest" resultType="com.test.Student">
...
</select>
- 예 : int 형 객체로 쿼리 실행 결과값을 받을 때
<select id="selectTest" resultType="int">
...
</select>
resultMap
- resultMap 선언 당시 참조로 사용한 이름을 입력
- resultType을 이용하면 자동 매핑되기 때문에 편리하지만 제한이 있으나,
resultMap을 사용하면 개발자가 직접 원하는 POJO 클래스에 매핑 가능
- 예 :
<resultMap id="test" type="com.test.Student">
<result property="name" column="name">
....
</resultMap>
<select id="selectTest" resultMap="test">
...
</select>
'개발 > 문제 해결' 카테고리의 다른 글
[Mac OS] react.js 앱 초기화 시 error Command failed with exit code 1. 해결 (0) 2019.03.26 [ajax] 406 에러 해결 - jackson 라이브러리 추가 (0) 2019.01.21 [이클립스 에러] Document base does not exist or is not a readable directory (0) 2019.01.14 [이클립스 에러] No suitable driver found for jdbc 해결 (0) 2019.01.11 [이클립스 에러] Access restriction: The type Cookie is not accessible... (0) 2018.10.22 댓글