본문 바로가기
Java

[ibatis, Oracle, Java] Oracle에서 Java의 Map으로 변환될 때 소문자로 key값 처리

by 곰돌찌 2018. 11. 30.

[ibatis, Oracle, Java] Oracle에서 Java의 Map으로 변환될 때 소문자로 key값 처리



Oracle과 mySql 두 개를 모두 지원하고 ibatis에서 resultClass를 HashMap으로 받았을 때 처리하는 방법을 찾았다!


mySql같은 경우에는 key를 소문자나 camelCase로 해서 Map에 받아오지만 Oracle같은 경우에는 Map에 무조건 대문자로 받아온다.

따라서 oracle에서 resultClass를 hashMap으로 받을 때 아래와 같이 처리하면 OK!


먼저 java class 하나를 아래처럼 생성한다.

이 때 ListOrderMap 인터페이스를 extends해주어야함!


1
2
3
4
5
6
7
8
9
10
11
12
13
14
import org.apache.commons.collections.map.ListOrderedMap;
import org.apache.commons.lang3.StringUtils;
 
public class LowerKeyMap extends ListOrderedMap {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
 
    public Object put(Object key, Object value) {
        return super.put(StringUtils.lowerCase((String) key), value);
    }
}
 
cs


그 다음 ibatis에서 받아올 때 아래처럼 하면 완료


1
2
3
<select id="testId" resultClass="package.LowerKeyMap">
 Query
</select>
cs



DAO에서 받을 때 return 타입은 Map<String, Object> 이런식으로 받아오면 됨!

댓글