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)
不知道大家有没有更好的思路?