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

杨幂 MyBatis 2022-05-18 10:08:54 9217 1
Mybatis查询数据时,字段为null,转换为空串的方法分享
实现思路: 
    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>  
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: http://www.Java265.com/JavaFramework/MyBatis/202205/3411.html

最近发表

热门文章

好文推荐

Java265.com

//www.java265.com

站长统计|USA-001

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

Honor accompaniments