mybatis使用resultType=hashmap时发现值为null的参数没有返回导致空指针异常

解决方法:配置mybatis配置中的callSettersOnNulls参数为ture;

官网是这样介绍这个参数的:

指定当结果集中值为 null 的时候是否调用映射对象的 setter(map 对象时为 put)方法,这在依赖于 Map.keySet() 或 null 值初始化的时候比较有用。注意基本类型(int、boolean 等)是不能设置成 null 的。

默认情况下,callSettersOnNulls为false,也就是说如果返回的结果中某个参数的值为null,mybatis可能不返回这个参数。进而在代码中导致空指针异常。下面是一个例子:

mysql表格:
idnameage
1张三18
2李四20
3王五null
mapper:
    <select id="selectUserById" resultType="hashmap">
        SELECT
			*
        FROM
        	user
        WHERE
        	id = #{id}
    </select>

使用selectUserById查询id=3的用户时,会发现返回的map中,只有两个key,即id和name,这就进而可能在代码中导致出现空指针异常

在springboot中可配置mybatis
#指定当结果集中值为 null 的时候是否调用映射对象的 setter(map 对象时为 put)方法
mybatis.configuration.call-setters-on-nulls=true
在springboot中可配置mybatis-plus
#指定当结果集中值为 null 的时候是否调用映射对象的 setter(map 对象时为 put)方法
mybatis-plus.configuration.call-setters-on-nulls=true
在SSM中可配置
<settings>
<setting name="callSettersOnNulls" value="true"/>
</settings>

下面给出mybatis和mybatis-plus的官网地址,你前往查看详细介绍;
mybatis:前往mybatis官网
mybatis-plus:前往mybatis-plus官网

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值