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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix