• Mybatis查询数据部分字段显示为null,转成空串("")


    Mybatis查询数据部分字段显示为null,怎么转成空串("")

    1、先定义一个handler,来把字段为null的转成空串("")
    2、在Mapper.xml中,把可能为空的字段,加上typeHandler属性,指定处理的handler类的全路径。

    CustomStringTypeHandler.java

    package com.wang.common.mybatis.handler;
    
    import org.apache.ibatis.executor.result.ResultMapException;
    import org.apache.ibatis.type.BaseTypeHandler;
    import org.apache.ibatis.type.JdbcType;
    import org.apache.ibatis.type.MappedJdbcTypes;
    import org.apache.ibatis.type.MappedTypes;
    
    import java.sql.CallableStatement;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    /**
     * @Name: CustomStringTypeHandler
     * @Desc: 自定义mybatis处理类,将null返回为空串(‘’)
     * @Author: Administrator
     * @Date: 2019-09-03 18:20
     */
    @MappedTypes({String.class})
    @MappedJdbcTypes(JdbcType.VARCHAR)
    public class CustomStringTypeHandler extends BaseTypeHandler<String> {
    
    
        @Override
        public String getResult(ResultSet rs, String columnName) {
            String result;
            try {
                result = getNullableResult(rs, columnName);
            } catch (Exception e) {
                throw new ResultMapException("Error attempting to get column '" + columnName + "' from result set.  Cause: " + e, e);
            }
            return result;
        }
    
        @Override
        public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType)
                throws SQLException {
            ps.setString(i, parameter);
        }
    
        @Override
        public String getNullableResult(ResultSet rs, String columnName)
                throws SQLException {
            return rs.getString(columnName) == null? "" : rs.getString(columnName);
        }
    
        @Override
        public String getNullableResult(ResultSet rs, int columnIndex)
                throws SQLException {
            return rs.getString(columnIndex) == null? "" : rs.getString(columnIndex);
        }
    
        @Override
        public String getNullableResult(CallableStatement cs, int columnIndex)
                throws SQLException {
            return cs.getString(columnIndex) == null? "" : cs.getString(columnIndex);
        }
    }

    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.wang.sss.fw.mapper.BusinessTripMapper">
      <resultMap id="BaseResultMap" type="com.wang.sss.fw.pojo.BusinessTrip">
        <result column="REQUEST_ID" jdbcType="VARCHAR" property="requestId" />
        <result column="JOB_NUMBER" jdbcType="VARCHAR" property="jobNumber" />
        <result column="REQUEST_DATE" jdbcType="VARCHAR" property="requestDate" />
        <result column="DEPARTMENT" jdbcType="VARCHAR" property="department" />
        <result column="BUSINESS_DAYS" jdbcType="VARCHAR" property="businessDays"/>
        <result column="CFD" jdbcType="VARCHAR" property="cfd" />
        <result column="MDD" jdbcType="VARCHAR" property="mdd" />
        <result column="START_TIME" jdbcType="VARCHAR" property="startTime" />
        <result column="END_TIME" jdbcType="VARCHAR" property="endTime" />
        <result column="REASON" jdbcType="VARCHAR" property="reason" typeHandler="com.wang.common.mybatis.handler.CustomStringTypeHandler"/>
        <result column="REMARK" jdbcType="VARCHAR" property="remark" typeHandler="com.wang.common.mybatis.handler.CustomStringTypeHandler"/>
      </resultMap>
    </mapper>  

    没有加typeHandler属性,处理之前的查询结果:

    BusinessTrip(requestId=11925, jobNumber=5721, requestDate=2019-05-06, department=57, businessDays=21, cfd=上海, mdd=南京, startTime=2019-05-06 13:36, endTime=2019-05-07 13:36, reason=null, remark=null)

    增加typeHandler属性,处理后的结果:(reason和remark字段都变成了空串)

    BusinessTrip(requestId=11925, jobNumber=5721, requestDate=2019-05-06, department=57, businessDays=21, cfd=上海, mdd=南京, startTime=2019-05-06 13:36, endTime=2019-05-07 13:36, reason=, remark=)

    参考:

    https://www.icode9.com/content-4-448412.html

  • 相关阅读:
    Java基础知识强化之集合框架笔记20:数据结构之 栈 和 队列
    Java基础知识强化之集合框架笔记19:List集合迭代器使用之 并发修改异常的产生原因 以及 解决方案
    模块已加载,但对dllregisterServer的调用失败
    sql回滚
    BAT 批处理脚本 教程
    shell脚本小技巧
    shell if
    REDHAT4.8安装yum
    Linux中文显示乱码解决
    Nginx配置文件详细说明
  • 原文地址:https://www.cnblogs.com/sfnz/p/15419286.html
Copyright © 2020-2023  润新知