1. 程式人生 > 其它 >Mybatis查詢資料部分欄位顯示為null,轉成空串("")

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