如果dao的返回值是实体,则lect查询无记录时返回null。容易报空指针异常!
notice findby年假国家规定id();
如果dao的返回值是list,则lect查询无记录是返回的是[],也就是空数组,
而不是null。所以这时候判空需要用collectionutils.isnotempty(),而不是”==null”
list<notice> findbyid();
(方法名)queryallnumfromcart attempted to return null from a method with a primiti班级文化ve return type (long)的问题
queryallnumfromcart此方法在mapper.xml中是这样定义的:
<lect id="queryallnumfromcart" parametertype="java.lang.integer" resulttype="java.lang.long">早会激励小故事; lect sum(num) from t_cart where ur_id = #{urid} </lect>
在mapper中是这样定义的:
long queryallnumfromcart(integer urid); //返回值为long类型
调用后运行报错:
java.lang.runtimeexception: org.apache.ibatis.binding.bindingexception: mapper method ‘com.egoo.mapper.cartmapper.queryallnumfromcart attempted to return null from a method with a primitive return type (long).
org.apache.ibatis.binding.bindingexception: mapper method ‘com.egoo.mapper.cartmapper.queryallnumfromcart attempted to return null from a method with a primitive return type (long).
at org.apache.ibatis.binding.mappermethod.execute(mappermethod.java:94)
at org.apache.ibatis.binding.mapperproxy.invoke(mapperproxy.java:59)
at com.sun.proxy.$proxy16.queryallnumfromcart(unknown source)
at com.egoo.rvice.impl.cartrviceimpl.gettotalfrommysql(cartrviceimpl.java:370)
at com.alibaba.dubbo.common.bytecode.wrapper2.invokemethod(wrapper2.java)
at com初三政治.alibaba.dubbo.rpc.proxy.javassist.javassistproxyfactory$1.doinvoke(javassistproxyfacto如何调漂ry.java:47)
at com.alibaba.dubbo.rpc.proxy.abstractproxyinvoker.invoke(abstractproxyinvoker.java:76)
at com.alibaba.dubbo.config.invoker.delegateprovidermetadatainvoker.invoke(delegateprovidermetadatainvoker.java:52)
at com.alibaba.dubbo.rpc.protocol.invokerwrapper.invoke(invokerwrapper.java:56)
at com.alibaba.dubbo.rpc.filter.exceptionfilter.invoke(exceptionfilter.java:62)
……
主要报错原因的语句为:
(method)attempted to return null from a method with a primitive return type (long)
此方法企图从定义了原始的返回类型(long)的方法中返回null ,显而易见,此处的返回值类型有问题。网上搜了之后发现是mybais的返回值为包装类,且sql语句的定义的返回值类型为:java.lang.long。查询数据库为空后,会返回null而不是0l,所以此处需要将方法的返回值类型改为包装类java.lang.long:
//long queryallnumfromcart(integer urid); //当查询到的数据为0条时,会返回null,而不是0,可以改为包装类
或者在sql语句中加入ifnull(expr1,expr2)的函数进行判断:
lect ifnull(sum(num),0) from t_cart where ur_id = 1
建议还是使用修改sql语句的方式。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持www.887551.com。
本文发布于:2023-04-04 17:10:10,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/348c15a01b57f96b320f7576f1ba2182.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:MyBatis查询无记录时的返回值问题.doc
本文 PDF 下载地址:MyBatis查询无记录时的返回值问题.pdf
留言与评论(共有 0 条评论) |