一行配置引发的bug -- mybatis 的 callSett

2017-12-12  本文已影响721人  费城的二鹏

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

上一篇下一篇

猜你喜欢

热点阅读