Mybatis 列包含下划线返回null
Mybatis the column contains underline returned null
我用的是springmvc和mybatis。
我的 mapper.xml 喜欢这个:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dao.mapper.ReportPersonGroupingMapper">
<cache type="org.mybatis.caches.ehcache.LoggingEhcache"/>
<resultMap id="BaseResultMap" type="com.model.ReportPersonGrouping">
<result column="employee_code" property="employeeCode" />
<result column="employeename" property="employeeName" />
<result column="working" property="working" />
<result column="before_work" property="beforeWork" />
</resultMap>
<select id="getResultSetByCodeAndName" resultMap="BaseResultMap">
select a.employee_code employeeCode,
b.EmployeeName employeeName,
a.working working,
a.before_work beforeWork
from report_person_grouping a inner join dbEmployee b
on a.employee_code = b.EmployeeCode
where 1=1
<if test='employeeCode != null and employeeCode!="" and (employeeName == null or employeeName =="")'>
and a.employee_code=#{employeeCode}
</if>
<if test='employeeName != null and employeeName!="" and (employeeCode == null or employeeCode =="")'>
and b.EmployeeName like '%${employeeName}%'
</if>
<if test='employeeCode != null and employeeCode!="" and employeeName != null and employeeName !=""'>
and a.employee_code=#{employeeCode}
</if>
</select>
</mapper>
当我调试 java 代码时,我发现该列包含下划线并返回 null。
我的mybatis-config.xml喜欢这个:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD SQL Map Config 3.4//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="cacheEnabled" value="true" />
<setting name="lazyLoadingEnabled" value="true" />
<setting name="multipleResultSetsEnabled" value="true" />
<setting name="useColumnLabel" value="true" />
<!--<setting name="defaultStatementTimeout" value="25000" />-->
<!--<setting name="defaultExecutorType" value="REUSE" />-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<setting name="logImpl" value="STDOUT_LOGGING" />
</settings>
</configuration>
如何解决空值问题?数据库中的这个字段
具有正确的值。
你在
提问
<if test='employeeCode != null and employeeCode!="" and (employeeName == null or employeeName =="")'>
and a.employee_code=#{employeeCode}
</if>
可能你传递了一个空值
问题是查询重命名了该列,而在结果集中该列被命名为 employeeCode
:
select a.employee_code employeeCode
但在映射中指定列名是 employee_code
:
<result column="employee_code" property="employeeCode" />
您不应在查询中创建别名或修复映射。
我用的是springmvc和mybatis。 我的 mapper.xml 喜欢这个:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dao.mapper.ReportPersonGroupingMapper">
<cache type="org.mybatis.caches.ehcache.LoggingEhcache"/>
<resultMap id="BaseResultMap" type="com.model.ReportPersonGrouping">
<result column="employee_code" property="employeeCode" />
<result column="employeename" property="employeeName" />
<result column="working" property="working" />
<result column="before_work" property="beforeWork" />
</resultMap>
<select id="getResultSetByCodeAndName" resultMap="BaseResultMap">
select a.employee_code employeeCode,
b.EmployeeName employeeName,
a.working working,
a.before_work beforeWork
from report_person_grouping a inner join dbEmployee b
on a.employee_code = b.EmployeeCode
where 1=1
<if test='employeeCode != null and employeeCode!="" and (employeeName == null or employeeName =="")'>
and a.employee_code=#{employeeCode}
</if>
<if test='employeeName != null and employeeName!="" and (employeeCode == null or employeeCode =="")'>
and b.EmployeeName like '%${employeeName}%'
</if>
<if test='employeeCode != null and employeeCode!="" and employeeName != null and employeeName !=""'>
and a.employee_code=#{employeeCode}
</if>
</select>
</mapper>
当我调试 java 代码时,我发现该列包含下划线并返回 null。
我的mybatis-config.xml喜欢这个:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD SQL Map Config 3.4//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="cacheEnabled" value="true" />
<setting name="lazyLoadingEnabled" value="true" />
<setting name="multipleResultSetsEnabled" value="true" />
<setting name="useColumnLabel" value="true" />
<!--<setting name="defaultStatementTimeout" value="25000" />-->
<!--<setting name="defaultExecutorType" value="REUSE" />-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<setting name="logImpl" value="STDOUT_LOGGING" />
</settings>
</configuration>
如何解决空值问题?数据库中的这个字段 具有正确的值。
你在
提问<if test='employeeCode != null and employeeCode!="" and (employeeName == null or employeeName =="")'>
and a.employee_code=#{employeeCode}
</if>
可能你传递了一个空值
问题是查询重命名了该列,而在结果集中该列被命名为 employeeCode
:
select a.employee_code employeeCode
但在映射中指定列名是 employee_code
:
<result column="employee_code" property="employeeCode" />
您不应在查询中创建别名或修复映射。