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

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)

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

你可能感兴趣的:(bug)