resultmap collection 사용하기

hanahana·2023년 3월 8일
0
  • 테이블을 join 했을 때 한 pk값에 여러 줄이 출력되어 값을 selectOne이 아니라 selectList로 받아야 할경우가있다.
  • 출력해야 할 값은 하나인데 이 경우 여러줄로 받을수밖에 없어진다.
  • 하지만 collection을 사용하면 selectOne으로 받을수있게된다
Column 1Column 2Column 3Column 4
No 1233
No 1345
No 2aaa
No 2bbb

여기에서 No 1 값만 가져온다고 가정하면 내가 출력한 쿼리문은

Column 1Column 2Column 3Column 4
No 1233
No 1345

이런결과를 준다, 이것을 보통 selectList("id명",전달값)으로 받아오지만 selectOne("id명",전달값)으로 받을수있다.

SQL.xml에서 resultMap을 만들어준다.

<!-- 상세 정보 불러오기를 위한 resultMap  -->
	<resultMap id="아이디" type="VO">	
		<id property="column1" column="Column 1" />
      
		<collection property="List" ofType="listVO">
			<result property="column2" column="Column 2" />
			<result property="column3" column="Column 3" />
			<result property="column4" column="Column 4" />

		</collection>
		
	</resultMap>
public class VO {
	private String column1;
    private List<ListVO> listVO;
    
    //gettersetter 생략

}

public class ListVO {
	private String column2;
    private String column3;
    private String column4;
        //gettersetter 생략
}
	* typeAlias에  type, ofType class등록할것

그렇게 되면 컬럼 2,3,4는 List로 처리되기 때문에 JSTL에서 불러올때
<c:forEach items="${VO.listVO}" var="result">
를 이용하여 column2,3,4만을 반복문으로 사용할수 있다.

profile
hello world

0개의 댓글