MyBatis之查询返回记录字段不全问题的解决方法

问题现象

当select的返回记录类型设置为map(或者其他Map类型,比如java.util.HashMap等)时,返回的map对象可能并未包含所有字段,即只出现有值的字段,而这恰恰是MyBatis的默认处理方式。

1
2
<select  ...  resultType="map">
</select>

解决方案

为了解决记录字段不全这个问题,我们可以在settings中增加callSettersOnNulls的设置,如下所示:

1
2
3
4
5
<configuration>
<settings>
<setting name="callSettersOnNulls" value="true"/>
</settings>
</configuration>

结束语

解决方案就这么简单,但研究MyBatis源码以分析解决该问题略微坎坷,希望对大家有用。