Mybatis如何查询数据部分字段显示为null,转成空串("")呢?
Mybatis查询数据时,字段为null,转换为空串的方法分享
Mapper.xml
实现思路: 1.定义handler实现字段中的null转换为空串("") 2.Mapper.xml中typeHandler属性中加入handler类的全路径例:
CustomStringTypeHandler.java package com.java265.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: java265.com * @Date: 2022-05-18 10:18 */ @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="*****"> <resultMap id="UserResultMap" type="****"> <result column="REQUEST_ID" jdbcType="VARCHAR" property="requestId" /> <result column="UserName" jdbcType="VARCHAR" property="userName" /> <result column="address" jdbcType="VARCHAR" property="address" /> <result column="note" jdbcType="VARCHAR" property="note" typeHandler="com.java265.common.mybatis.handler.CustomStringTypeHandler"/> </resultMap> </mapper>
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。