Develope/DataBase

[Mybatis] result type이 HashMap일 때 Null 처리

고로이 2017. 11. 14. 10:50
반응형

Mybatis에서 result 타입은 보통 VO를 많이 만들어서 지정해준다.


하지만 그게 안될 때 (VO가 너무 많아서 포기ㅎ;;) 


result type 을 보통은 HashMap으로 구성하게 되는데




문제는 Null이 결과인 컬럼은 


Map의 키에 저장되지 않는다;;



*******

if ( data == null ) 

return ;


else 

map.put("col_name", data);



******


이런 느낌



덕분에 


각 결과맵의 size가 달라질수도 잇는 재미잇는 상황;;



import 할때도 밀려들어갈 수 잇다.



이럴 땐 Mybatis-config.xml 파일에


        <setting name="callSettersOnNulls" value="true"/>


다음값을 추가해주면 된다.



*mybatis-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd" >

<configuration>
<settings>
<setting name="cacheEnabled" value="true" />
<setting name="useGeneratedKeys" value="false" />
<setting name="defaultExecutorType" value="REUSE"/>
<setting name="defaultStatementTimeout" value="60"/>
<setting name="callSettersOnNulls" value="true"/>
<setting name="mapUnderscoreToCamelCase" value="false"/>
</settings>

</configuration>




내 케이스에는 이 설정파일 자체가 없엇다.


어디서 적용하나 햇더니



* ApplicationContext.xml

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSourceDB01" />
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<property name="mapperLocations" value="classpath:CollectorSQLMap.xml" />
</bean>


sqlSessionFactory 에 저장해주면 된다.










반응형