<resultMap id="memberInfoMap" type="MemberInfoVO">
<result property="memberSeq" column="MBR_SEQ"/>
<result property="memberId" column="MBR_ID"/>
<result property="memberName" column="MBR_NM"/>
<association property="additionalInfoVO" column="{memberSeq=MBR_SEQ}" javaType="MemberAdditionalInfoVO" select="getMemberAdditionalInfo"/>
<collection property="likeItemInfoVOList" column="{memberSeq=MBR_SEQ}" javaType="java.util.ArrayList" select="getLikeItemList" />
</resultMap>
<select id="getMemberDetail" parameterType="MemberVO" resultMap="memberInfoMap">
... 생략
</select>
<select id="getMemberAdditionalInfo">
...
</select>
<select id="getLikeItemList" resultMap="mapLikeItemList">
...
</select>
예시 매퍼파일
association 과 collection 사용 역할 구분하기!
매핑결과를 깔끔하게 해주는 association 과 collection 은 결과데이터 간의 n:n 관계에 따라 사용을 달리 해준다.
1. 네이버 영어사전.. 으로 이해해보기
association은 제휴, 연계, 유대(combination) collection은 (물건·사람들의) 무리, 더미
제휴는 어쨌든 1:1로 관계를 맺는 거니까, association은 1:1 관계에서 사용한다고 생각하기
무리나 더미는 여러가지를 한꺼번에 모아놓는 거니까, collection은 1:N 관계에서 사용한다고 생각하기!
결론은
association은 객체와 객체간의 관계가 1:1 매핑이 될 때 사용한다.
collection은 객체와 객체간의 관계가 1:N 매핑이 될 때 사용한다.
2. association, collection의 속성값 설명
예)
<association property="additionalInfoVO" column="{memberSeq=MBR_SEQ}" javaType="MemberAdditionalInfoVO" select="getMemberAdditionalInfo"/>
- property = 쿼리결과를 세팅할 변수명
- column = (association으로 가져올) 데이터 색인에 사용할 필드, 여러개 사용 가능, 콤마(,)로 구분
예)column=”{prop1=col1,prop2=col2}”
- select = 사용할 select 쿼리 id. 같은 xml 파일 내에 있는 쿼리가 아닐경우, 매퍼의 namespace + 쿼리 id
- resultMap = 결과데이터를 객체에 매핑시키는 것에 대한 정의
- columnPrefix = 지정된 Prefix로 시작하는 컬럼에 대해서만 매핑한다. (예를들어 같은 이름의 컬럼을 가져 올 때)
예)
, MEMBER_ID
, MEMBER_ID AS ANOTHER_MEMBER_ID
에서 Map 데이터의 속성값에 columnPrefix = "ANOTHER_" 로 지정 시 ANOTHER_ 접두어가 붙은 컬럼을 매핑할 수 있음.
참조 >>>> 중첩 매핑 시 columnPrefix 주의사항 ) https://androphil.tistory.com/733
[MyBatis] association columnPrefix 중첩 사용시 주의 사항 :: 소림사의 홍반장!
<!-- <ins class="adsbygoogle" style="display:inline-block;width:320px;height:100px" data-ad-client="ca-pub-6360916919554143" data-ad-slot="4198061716"> (adsbygoogle = window.adsbygoogle || []).push({}); <ins class="adsbygoogle" style="display:inline-block;
androphil.tistory.com
즉, prefix도 상속됨!!!!
- javaType = association의으로 가져올 결과를 매핑할 변수의 타입
- ofType = collection 으로 가져올 결과를 매핑할 변수의 타입.. association의 javaType이랑 같은 역할 인 듯!
즉, association 에서는 javaType으로 결과객체의 타입을 명시해주고, collection 에서는 ofType으로 명시해준다.
위의 모든 내용은 아래 페이지를 보고 필요한 부분만 정리했다. 이렇게 공식 문서가 깔끔하게 정리되어있으니 편리하다.
https://mybatis.org/mybatis-3/ko/sqlmap-xml.html
MyBatis – 마이바티스 3 | 매퍼 XML 파일
Mapper XML 파일 마이바티스의 가장 큰 장점은 매핑구문이다. 이건 간혹 마법을 부리는 것처럼 보일 수 있다. SQL Map XML 파일은 상대적으로 간단하다. 더군다나 동일한 기능의 JDBC 코드와 비교하면
mybatis.org
사담
개발하면서 가끔 생각한다
각종 플러그인을 개발하는 사람들은 천재같다.. 개발하기 편리하게 해주신 분들이 존경스럽다 ㅋㅋㅋ
mybatis 는 버전이 업그레이드 되면서 사용하기 점점 편해지고 있다고 한다.
association 이나, collection 을 접하게 되면서 소스 한번에 여러 쿼리를 작동시킬 수 있다는 점이 편리하고 좋았다.
'웹개발지식쌓기' 카테고리의 다른 글
[front] 스크롤 바닥까지 내렸을 때 다음 페이지 가져오기 (부제:웨일 브라우저 이슈) (0) | 2023.06.01 |
---|---|
[back] 세션 설정 파일의 위치들 (프로젝트, 서버, 리눅스 profile 의 세션 설정) (0) | 2023.06.01 |
[back] ORA-01861: literal does not match format string (2) | 2023.05.26 |
[server] 리눅스 언어설정 locale - 테스트 서버에서 요일이 영어로 나올 때 (0) | 2023.05.26 |
[front] Safari 날짜정보 NaN으로 나올 때 (0) | 2023.05.19 |