iBatis 컬럼명을 소문자로 받기

Posted: 2009/11/23 in 스프링
태그:, , ,

iBatis에서는 <select> 구문에서 resultCass=”java.util.HashMap” 으로 설정하여서 결과값을 HashMap으로 받는 경우 자동으로 컬럼명을 Key로 데이타를 value로 설정하여 주기때문에 간편하게 사용할 수 있습니다.
하지만, 문제가 있는데 컬럼명을 대문자로만 리턴한다는 것입니다. 자동으로 컬럼명을 Key로 설정하여 주는 것은 고마운 일이긴 하지만 소문자를 사용하는 환경에서 대문자로 컬럼명을 리턴한다는 것은 문제가 있을 수 있습니다.

이러한 경우에는 하드한 해결방법으로는 JDBC 드라이버를 직접 수정해 주는 방법이 있으며 , 소프트한 방법으로는 <resultMap>을 이용하는 방법이 있습니다.
하드한 방법은 DBMS 별로 JDBC 드라이버를 수정해야 하는 불편이 있으므로 별로 추천하지 않습니다.

저는 <resultMap>을 사용하는 것을 추천합니다. 물론 조금 귀찮기는 하지만 <resultMap>을 사용하면 property에 지정한 컬럼명을 Key로 설정해 주기 때문에
대소문자문제는 고민을 하지 않아도 됩니다. 또한 명시적으로 레코드타입을 설정이 가능하기 때문에 가능하다면 <resultMap>을 사용하는 것이 좋겠습니다.

예를 들어 본다면 아래와 같은 설정으로 리턴되는 값들은 모두 대문자로 출력됩니다.

* sqlMap 설정

<select id=”getUser”  parameterClass=”java.util.HashMap”  resultClass=”java.util.HashMap”>
     select   user_id , user_name  FROM   user_list  WHERE  user_id = #user_id# and user_pass = #user_pass#
</select>

* 결과값

Key = USER_ID , Value = coyote
Key = USER_NAME , Value = 승냥이

하지만, <resultMap>을 사용한다면 우리가 원하는 형태로 리턴값을 조절 할 수 있습니다.
 
* sqlMap 설정

<resultMap id=”user.info”>
      <result property=”user_id”      column=”user_id”/>
      <result property=”user_name”    column=”user_name”/>
</resultMap>

<select id=”getUser”  parameterClass=”java.util.HashMap”  resultMap=”user.info”>
    select   user_id , user_name  FROM   user_list  WHERE   user_id = #user_id# and user_pass = #user_pass#
</select>

* 결과값

Key = user_id , Value = coyote
Key = user_name , Value = 승냥이

댓글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. Log Out / 변경 )

Twitter picture

Twitter의 계정을 사용하여 댓글을 남깁니다. Log Out / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. Log Out / 변경 )

%s에 연결하는 중