Mybatis配置文件之<typeHandlers>元素解析

解决mybatis返回数据类型为map,值为null的key没返回

mybatis使用Map返回时数据库为空的字段不返回问题 (https://www.cnblogs.com/guo-xu/p/12548949.html)

mybatis返回map时value值为null没有对应的key https://blog.csdn.net/FORLOVEHUAN/article/details/107410736

解决mybatis返回数据类型为map,值为null的key没返回(基于spring) https://blog.csdn.net/FORLOVEHUAN/article/details/107410736

方案1、mybtis 3.3以上版本,增加配置<setting name="callSettersOnNulls" value="true"/>

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings> 
        <!-- 当返回数据类型为map,设置callSettersOnNulls会把值为null的key也返回 -->
        <setting name="callSettersOnNulls" value="true"/> 
    </settings>
</configuration>

方案2、自定义TypeHandler

2.1 则可以建立一个类,实现Mybatis的TypeHandler接口

package Cloud.Base.Storage.SQL.Handler;

import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.TypeHandler;

import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * 自定义TypeHandler
 * 处理mybatis返回map的value值为null没有对应的key
 */
public class EmptyStringIfNull implements TypeHandler<String>
{
    @Override
    public String getResult(ResultSet rs, String columnName) throws SQLException
    {
        return (rs.getString(columnName) == null) ? "" : rs.getString(columnName);
    }

    @Override
    public String getResult(ResultSet rs, int columnIndex) throws SQLException
    {
        return (rs.getString(columnIndex) == null) ? "" : rs.getString(columnIndex);
    }

    @Override
    public String getResult(CallableStatement cs, int columnIndex) throws SQLException
    {
        return (cs.getString(columnIndex) == null) ? "" : cs.getString(columnIndex);
    }

    @Override
    public void setParameter(PreparedStatement ps, int arg1, String str, JdbcType jdbcType) throws SQLException
    {
    }
}

2.2 返回结果集处理

    <resultMap id="xxxMap" type="java.util.Map">
       <result property="xxxxParam" column="xxxxParam"  typeHandler="Cloud.Base.Storage.SQL.Handler.EmptyStringIfNull"></result>
    </resultMap>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值