MyBatis Error:BindingException Mapper method attempted to return null

错误描述:mysql

在使用Mybatis的项目中有一个查询最新插入数据的需求。我写了以下SQL语句:sql

当表中有数据时,使用这个SQL查询是没有错误的,可是当表中没有数据则会出现以下错误:apache

org.apache.ibatis.binding.BindingException: Mapper method 'com.lixin.mapper.TemperatureMapper.getCurrentOutTemperature attempted to return null from a method with a primitive return type (double).app

也就是由于表中没有数据,因此查询返回null,不符合double类型,因此出现错误。函数

解决方法:spa

在mysql中能够使用IFNULL(exp1,exp2)方法,它的含义是若是exp1不为null则正常返回,若是exp1位null,则返回exp2。get

因而我改写了SQL以下图(错误的):it

结果仍然是报出相同的错误!!!就在这里困扰了我很久!!!io

最后折腾一番后,发现ifnull()max()两个函数配合起来才不会出错!换句话说使用max()、min()、avg()函数必定使用ifnull()防止返回null致使的错误。(这个错误不必定会有异常报出)map

更改SQL以下图:

更改后查询返回了正确结果0。

我尝试了ifnull(1,0)能够正确返回1,ifnull(null,0)能够正确返回0,可是ifnull(t_val,0)没有返回0的具体缘由仍是没搞懂,但愿看到这个问题的朋友可以给我指点迷津,谢谢~🙏

相关文章
相关标签/搜索