MyBatis Error:BindingException Mapper method attempted to return null

2018-01-15 14:37:43来源:oschina作者:开源中国首席有志青年人点击

分享

错误描述:


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



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


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).



也就是因为表中没有数据,所以查询返回null,不符合double类型,所以出现错误。


解决方法:


在mysql中可以使用IFNULL(exp1,exp2)方法,它的含义是如果exp1不为null则正常返回,如果exp1位null,则返回exp2。


于是我改写了SQL如下图(错误的):



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


最后折腾一番后,发现ifnull()max()两个函数配合起来才不会出错!


更改SQL如下图:



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


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

微信扫一扫

第七城市微信公众平台