最近接收一個項目,隨手點點發現一個bug,經過調試發現,搜索數據的時候,返回了一個所有屬性都是空的對象,而舊的版本沒有這個問題。找了兩天時間,最終定位問題所在,特此記錄。
放代碼:
<?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>
<properties>
<property name="dialect" value="mysql"/>
</properties>
<settings>
<setting name="logImpl" value="log4j"/>
<setting name="callSettersOnNulls" value="true"/>
</settings>
<plugins>
<plugin interceptor="com.jc.foundation.dao.interceptor.PaginationInterceptor"/>
<plugin interceptor="com.jc.foundation.dao.interceptor.EncryInterceptor"></plugin>
</plugins>
</configuration>
看見 <setting name="callSettersOnNulls" value="true"/> 這行了么?對!就是這行配置。粘貼一下搜到的資料。
When a query returns a row with all columns being null (= an empty row), MyBatis returns null by default.
翻譯一下,當查詢的返回一行都是null的結果時,MyBatis會幫忙填充一個所有屬性都是null的對象。對就是這,和我遇見的bug一模一樣,用此文哀悼我逝去的兩天時光。