Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
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 29 30 31
Archives
Today
Total
관리 메뉴

KSI일기장

resultMap역할과 사용이유 & parameterType,resultType사용 본문

Spring

resultMap역할과 사용이유 & parameterType,resultType사용

MyDiaryYo 2023. 5. 9. 15:37

  *resultMap 태그의 역할*
  -SELECT 조회결과(ResultSet)의 컬럼과 
  조회결과를 옮겨 담을 VO의 필드명이 일치하지 않을 때
  이를 매핑시켜 조회결과가 필드에 세팅되게 하는 역할
  
  [resultMap 속성]
  1)type :조회결과를 담을 VO의 타입 또는 별칭 ex)mybatis-config에서 만든member
  2)id :만들어진 resultMap태그를 지칭할 이름(식별명)

 

*resultMap에 vo를 작성하는 이유*
  -VO의 필드명과 DB의 조회되는 컬럼명이 일치하면 자동으로 VO객체에 값이 세팅된다
  -> java와 DB의 표기법 차이로 인해 위 특징이 적용되는 경우가 거의 없다
   ex) vo.Member = memberNo -> DB = MEMBER_NO
  -> 해결방법
   필드명, 컬럼명이 다르더라도 이를 연결시켜 줄 수 있는 <resultMap> 태그를 제공한다
   [vo필드] - [DB의 컬럼]
   memberNo - MEMBER_NO
   

<resultMap type="member" id="member_rm">
    
    	<id property="memberNo" column="MEMBER_NO"/>
    	
    	<result property="memberEmail"		column="MEMBER_EMAIL"/>
    	<result property="memberPw" 		column="MEMBER_PW"/>
		<result property="memberNickname" 	column="MEMBER_NICK"/>
		<result property="memberTel" 		column="MEMBER_TEL"/>
		<result property="memberAddress" 	column="MEMBER_ADDR"/>
		<result property="profileImage" 	column="PROFILE_IMG"/>
		<result property="enrollDate" 		column="ENROLL_DT"/>
		<result property="secessionFlag" 	column="SECESSION_FL"/>
    
    </resultMap>


   resultMap="member_rm" -> 조회결과를 member_rm을 이용해 비교하여 VO에 세팅까지 해준것이다

 

 

 

 

 *****select태그 속성*****
   resultType : 조회결과의 자료형을 결정

     조회결과가 1행 1열인 경우에만 작성해야 한다
     조회된 데이터의 java자료형을 Mybatis별칭 형태로 작성해야 한다

    자료형에 vo를 적어줄 경우 모든 경로를 적어줘야한다
  
  [**mybatis별칭**]
       [java]       :    [mybatis]
        int           :    _int
        Integer    :      int
        String      :   string (== java.lang.String)

ex)

 <!-- 조회되는 행 개수: 1행 -->
  <select id="test1" resultType="_int">
  	SELECT COUNT(*) FROM MEMBER_S
  </select>

 

 

 

*parameterType : sql구문에 사용될 매개변수의 자료형을 결정

                          자료형에 vo를 적어줄 경우 모든 경로를 적어줘야한다

 

ex)

<select id="test1" parameterType="comm.si.login.vo.member" resultType=" comm.si.login.vo.member ">

             SELECT COUNT(*) AS mem_cnt FROM MEMBER
             WHERE MEMBER_NO = #{memberNo}

</select>