출처: http://blog.naver.com/goolungsoi/10091410173
아래와 같이 HashMap을 resultClass로 사용시 오라클과 MS-SQL 을 둘다 지원을 못하는 문제가 있다.
<select id="selectTableA" resultClass="java.util.HashMap">
</select>
|
(1) 오라클의 경우
- HashMap에서 결과값을 읽을때 무조건 대문자로 컬럼명을 적어주어야 한다.
List list = TableADaoImpl.selectTableA(); HashMap resultMap = null; String id = null, name = null;
for(int i = 0; i < list.size(); i++) { resultMap = (HashMap) list.get(i); id = resultMap.get("ID"); name = resultMap.get(NAME); }
|
(2) MS-SQL의 경우
- HashMap에서 결과값을 읽을때, 쿼리에서 사용한 컬럼명의 대소문자로 적어주어야 한다.
List list = TableADaoImpl.selectTableA(); HashMap resultMap = null; String id = null, name = null;
for(int i = 0; i < list.size(); i++) { resultMap = (HashMap) list.get(i); id = resultMap.get("id"); name = resultMap.get("name"); }
|
<< 해결책 >>
- commons-collections-3.2.x.jar 에 있는
org.apache.commons.collections.map.CaseInsensitiveMap 클래스를 사용하여
아래와 같이 처리하면 해결된다.
<select id="selectTableA" resultClass="org.apache.commons.collections.map.CaseInsensitiveMap">
</select>
List list = TableADaoImpl.selectTableA(); CaseInsensitiveMap resultMap = null; String id = null, name = null;
for(int i = 0; i < list.size(); i++) { resultMap = (CaseInsensitiveMap) list.get(i); id = resultMap.get("ID"); // resultMap.get("ID") 를 사용해도 결과는 똑같다. name = resultMap.get("NAME"); // resultMap.get("NAME") 을 사용해도 결과는 똑같다. }
|
'IT_Programming > Dev Libs & Framework' 카테고리의 다른 글
[펌] mysql + ibatis 사용시, mysql connector 에러 해결 방법 (0) | 2013.02.27 |
---|---|
[펌] Spring, iBatis, 프로시저 사용 샘플 (0) | 2013.02.26 |
[펌] Spring - GenericController 만들기 (0) | 2013.02.21 |
[펌] Spring - XML, JSON 출력관련: ContentNegotiatingViewResolver에 대하여... (0) | 2013.02.21 |
[펌] SWIG를 이용해 C++코드를 C#에서 사용하기 (0) | 2012.06.08 |