91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MyBatis查詢無記錄時返回值報錯怎么辦

發布時間:2022-01-21 16:53:06 來源:億速云 閱讀:468 作者:iii 欄目:開發技術

本篇內容主要講解“MyBatis查詢無記錄時返回值報錯怎么辦”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“MyBatis查詢無記錄時返回值報錯怎么辦”吧!

MyBatis查詢無記錄的返回值

在MyBatis 3.4.1下

如果Dao的返回值是實體,則select查詢無記錄時返回null。容易報空指針異常!

Notice findById();

如果Dao的返回值是List,則select查詢無記錄是返回的是[],也就是空數組,

而不是null。所以這時候判空需要用CollectionUtils.isNotEmpty(),而不是"==null"

List<Notice> findById();

查詢無結果時的返回值報錯問題

mybatis的查詢無結果時報錯

(方法名)queryAllNumFromCart attempted to return null from a method with a primitive return type (long)的問題

queryAllNumFromCart此方法在mapper.xml中是這樣定義的:

 <select id="queryAllNumFromCart" parameterType="java.lang.Integer" resultType="java.lang.Long">
      select sum(num) from t_cart where user_id = #{userId}
  </select>

在mapper中是這樣定義的:

long queryAllNumFromCart(Integer userId);  //返回值為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.service.impl.CartServiceImpl.getTotalFromMysql(CartServiceImpl.java:370)
    at com.alibaba.dubbo.common.bytecode.Wrapper2.invokeMethod(Wrapper2.java)
    at com.alibaba.dubbo.rpc.proxy.javassist.JavassistProxyFactory$1.doInvoke(JavassistProxyFactory.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 userId);  //當查詢到的數據為0條時,會返回null,而不是0,可以改為包裝類

或者在sql語句中加入IFNULL(expr1,expr2)的函數進行判斷:

select IFNULL(sum(num),0) from t_cart where user_id = 1

建議還是使用修改sql語句的方式。

到此,相信大家對“MyBatis查詢無記錄時返回值報錯怎么辦”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

客服| 高碑店市| 日喀则市| 镇宁| 卓资县| 保德县| 邢台县| 卢湾区| 高青县| 舞阳县| 永吉县| 句容市| 石景山区| 沾益县| 东方市| 常宁市| 晋宁县| 丰镇市| 平罗县| 孝义市| 威信县| 五家渠市| 衡阳县| 衡阳市| 吴忠市| 绵阳市| 巴林左旗| 尖扎县| 永仁县| 寿光市| 临湘市| 岳西县| 永清县| 丽江市| 郑州市| 南和县| 自贡市| 崇文区| 南召县| 霍城县| 赣州市|