본문 바로가기

내컴퓨터/컴퓨터사용하기

ibatis resultClass hashmap 키값 소문자로 변경하기

어마어마하게 많은 컬럼들..

그걸다 일일이 resultMap으로 맵핑하는게

여간 번거로운게 아니다.

그래서 resultClass를 HashMap으로 받는다.

 

이걸 JsonObject로 변환해서, Gson으로 객체에 담으면,

두줄이면 자동 맵핑 되니까 겁나 간단해지지 ㅋㅋㅋㅋㅋ

 

그런데 이게 뭔일 :(

 

ibatis 결과값을 HashMap으로 받았더니,

키값이 대문자로 들어간다 -ㅅ-

 

찾아보니, ibatis나 DB와 관련된 클래스를 직접 수정해서 사용하면 된다던데,

그러기엔 귀찮아서 꼼수를 쓰기로 함.

 

HashMap결과 받아온 값이 result라고 하면,

Iterator iterator = result.keySet().iterator();
 Map  newResult = new HashMap();
 while(iterator.hasNext()){
  String key = (String)iterator.next();
  newResult .put(key.toLowerCase(), temp.get(key));
 }

 

이렇게 newResult 라는 새로운 Map을 생성해서,

키값을 소문자로 바꿔서 다시 put해주는 방식.

 

그리고 이걸 Gson으로 만들어서 객체에 담는다.

 

String json = JSONObject.toJSONString(newResult );
Gson gson = new Gson();

MyVO vo= (MyVO )gson.fromJson(json, MyVO .class);

 

이렇게..

 

 

*Gson을 쓴다면 당연한 얘기지만,

VO나 Bean파일의 필드명은 컬럼명과 동일할때만 사용할 수 있다.

 

그래도 resultMap쓰는 노가다보단 편한것 같다.