본문 바로가기

IT/개발

Spring ibatis resultMap 쿼리 2개실행

저는 ibatis에서 주로 resultType으로 resultClass를 사용했습니다.
VO에 선언해주고 resultClass에 선언해주면 끝이었으니까요.(간단해서)

주석의 기능은 userVO를 단건 조회할때 user의 subject의 리스트를 가져오는 기능입니다.
ex) userVO={userName=홍길동, userSeq=10, userAge=17, userGender=M, userSubjects=[Math,English,Science]}

정리하면
1. resultMap을 사용할땐 column의 값이 property의 값으로 set된다
2. resultMap안에 List변수를 선언해서 또 하나의 쿼리ID를 실행할 수 있다.
3. resultMap안에 List변수를 선언했다면 VO에 List변수를 선언해준다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<typeAlias alias="userVO" type="com.ssc.prac.member.UserVO">
<resultMap id="resultVO"    class="userVO">
    <result property="userName" column="USER_NAME"/>
    <result property="userSeq" column="USER_SEQ"/>
    <result property="userAge" column="USER_AGE"/>
    <result property="userGender" column="USER_GENDER"/>
 
    <!-- 자식테이블을 리스트로 가져오기 -->
    <result property="userSubject" column="USER_SEQ" javaType="java.util.List" select="userDAO.getUserSubjects" /> 
</resultMap>
 
<!-- 유저단건조회 -->
<select id="userDAO.getUser" parameterClass="java.lang.String" resultMap="resultVO">
    SELECT USER_NAME
          ,USER_SEQ
          ,USER_AGE
          ,USER_GENDER
      FROM T_USER
     WHERE USER_SEQ = #USER_SEQ#
</select>
 
 
<!-- 유저 subjects 리스트 조회 -->
<select id="userDAO.getUserSubjects" parameterClass="java.lang.String" resultClass="java.lang.String">
    SELECT NAME
      FROM T_SUBJECTS
     WHERE USER_SEQ = #USER_SEQ#
</select>
cs
1
2
3
4
5
6
7
8
9
public class UserVO {
    private String userName;
    private String userSeq;
    private String userGender;
    private String userAge
    private List<String> userSubject;
 
    //setter getter는 생략합니다.
}
cs

감사합니다.

 

'IT > 개발' 카테고리의 다른 글

JAVA 상대경로  (0) 2019.12.02
JAVA 입력과 출력 stream  (0) 2019.10.19
Spring(JAVA) 엑셀 대용량 업로드  (3) 2019.10.12
스프링 form태그  (0) 2019.10.09
Java 파일 읽기, 파일 쓰기  (0) 2019.10.08