b

mybatis interface mapper기반에서 HashMap 가져오기. 본문

spring framework

mybatis interface mapper기반에서 HashMap 가져오기.

dev.bistro 2013. 9. 11. 12:50


현재 개발중인 플랫폼은 다양한 값들이 필요로 하고, 실행환경에서 변경이 필요하다. 그래서 filter나 properties방식이 아닌, KEY-VALUE Table을 만들어 넣고 이 테이블을 Properties로 쓰려고 하였다.


현재 Mybatis의 사용방법은  'Mapper Annotations'방법에 조금 복잡한 쿼리들은 기존의 XML 방법으로 이용하고 있다.  (참고 :  http://mybatis.github.io/mybatis-3/java-api.html )


[ SELECT NAME, VALUE FROM XXX_PLATFORM_ENV ] 라는 아주 단순한 쿼리이기 때문에 가능하면 annotation 으로 처리하고 싶어서 별짓을 다 해봤으나... 내가 원하는 KEY-VALUE의 MAP으로 받을수가 없었다.

가잡 근접하게 나온 결과가

key = {NAME=key, VALUE=....}, key = {NAME=key, VALUE=....} 이런결과였다 

즉, <Key, Key + 필드> 형태로 나오지 <Key, 1개 필드> 형태는 죽어도 못 뽑아내겠더라... 

대충 

@Select("SELECT name, value  FROM INFO_ENVIRONMENT")
@MapKey("key")
@Results({
@Result(column="name", property="key", id=true),
@Result(column="value", property="value", id=false)
})

어차피 mapper라 상위 service에서 List -> Map 으로 변경하는게 가장 속 편할 거 같다....

(XML mapper나, resultHandler를 쓰지 않고 Map<String, String>을 뽑아 낼수는 없을걸까?)



Comments