[Spring] Mybaits - ResultMap(1:N관계)

Whatever·2022년 2월 7일
0

Spring(스프링)

목록 보기
10/29

<resultMap> :

id - 기본키
result - 일반 속성

association : 1:1의 관계
collection : 1:다의 관계

체크해야할 것

  1. resultMap의 map이 존재하는가
  2. resultMap에서 1대다에서 다를 맡고 있는 속성이 colleciton으로 묶여있는가

SelectList로 반환할 때

VO객체의 List로 반환할 때 resultMap을 사용하는 방법.

1. select를 먼저 만들어준다.

<select id="아이디" resultMap="반환할 VO객체의 Map">
		쿼리문
</select>

2. 그에 해당하는 resultMap을 만든다.

	<resultMap type="VO객체명" id="반환할 VO객체의 Map(select의 resultMap속성의 값과 똑같다)">
		<id property="VO클래스의 멤버변수명" column="해당VO 테이블의 컬럼명"/>
		<result property="VO클래스의 멤버변수명" colum="해당VO 테이블의 컬럼명"/>
		<collection property="1:N에서 N에 해당하는 VO객체" resultMap="반환할 VO객체의 Map">
		</collection>
	</resultMap>

여기서 id는 기본키,
result는 기본키가 아닌 속성명을 의미한다.

collection은 1:N의 관계에서 N을 담당하는 속성에 지정해준다.

3. 1:N의 관계속성이 있을 때 또 그에 해당하는 resultMap을 만들어준다.

	<resultMap type="VO객체명" id="collection의 resultMap속성과 같은 값">
		<id property="VO클래스의 멤버변수명" column="해당VO 테이블의 컬럼명"/>
		<result property="VO클래스의 멤버변수명" column="해당VO 테이블의 컬럼명"/>
	</resultMap>

예제) LPROD를 1:N에서 N으로 가지고 있는 BuyerVO를 List로 반환하는 SQL.xml

	<resultMap type="buyerVO" id="buyerMap2">
		<id property="buyerId" column="BUYER_ID" />
		<result property="buyerName" column="BUYER_NAME" />
		<collection property="lprodVO" resultMap="lprodMap">
		</collection>
	</resultMap>
	
	<resultMap type="lprodVO" id="lprodMap">
		<id property="lprodId" column="LPROD_ID"/>
		<result property="lprodNm" column="LPROD_NM"/>
		<result property="lprodGu" column="LPROD_GU"/>
	</resultMap>
	
	<select id="lprodList" resultMap="buyerMap2">
		SELECT B.BUYER_ID
		     , B.BUYER_NAME
		     , L.LPROD_NM
		     , L.LPROD_GU
		FROM BUYER B, LPROD L
		WHERE B.BUYER_LGU = LPROD_GU
		ORDER BY BUYER_ID ASC
	</select>

0개의 댓글