最近接收一个项目,随手点点发现一个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一模一样,用此文哀悼我逝去的两天时光。