有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Mybatis列包含下划线并返回null

我使用springmvc和mybatis。 我的制图员。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的下划线 enter image description here

我的mybatis配置。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>

如何解决空值问题?数据库中的此字段 有正确的价值


共 (2) 个答案

  1. # 1 楼答案

    问题是查询重命名了列,并且在结果集中该列被命名为employeeCode

    select a.employee_code employeeCode
    

    但在映射中指定列名为employee_code

    <result column="employee_code" property="employeeCode" />
    

    您不应该在查询中创建别名,也不应该修复映射

  2. # 2 楼答案

    你在提问吗

    <if test='employeeCode != null and employeeCode!="" and (employeeName == null or employeeName =="")'>
        and a.employee_code=#{employeeCode}
        </if>
    

    也许你传递了一个空值