org.apache.ibatis.binding.BindingException: Mapper method 'com.zbiti.alarm.dao.AlarmDao.queryTest at

本文探讨了在Mybatis中查询结果为空时导致的异常情况,并提供了两种解决方案:一是将返回值类型改为Integer,二是使用String作为返回值类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mybatis异常

首先对这个异常信息进行蒋式翻译
接口AlarmDao中queryTest方法企图返回null,但是queryTest 方法定义的返回值为int

–很显眼null 转成 int 是会报错的。

bug重现场景(因为代码太简单,所以就不贴代码了):
使用Mybatis查询一个数值字段时,我们会使用int long 等简单类型作为resultType,如果我们这个sql没有查询出记录,也就是sql查询出的结果为null,那么这时候就会报错!!!

接口定义:

public int queryTest();

mapper定义 (staff_id = 33 不存在时):

<select id="queryTest"  resultType="int">
        SELECT staff_id FROM pub_staff p WHERE p.staff_id = 33
</select>

解决方法:

1、把接口和mapper中返回值改成 Integer
2、使用万能的String作为返回值
(注意:接口使用需要对接口返回结课进行判断,否则会出现空NPE)

不知道大家有没有更好的思路?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值