最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MyBatis查詢無記錄時的返回值問題

 更新時間:2022年01月21日 14:50:33   作者:郝大俠001  
這篇文章主要介紹了MyBatis查詢無記錄時的返回值問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

MyBatis查詢無記錄的返回值

在MyBatis 3.4.1下

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

Notice findById();

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

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

List<Notice> findById();

查詢無結(jié)果時的返回值報錯問題

mybatis的查詢無結(jié)果時報錯

(方法名)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類型

調(diào)用后運(yùn)行報錯:

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 ,顯而易見,此處的返回值類型有問題。網(wǎng)上搜了之后發(fā)現(xiàn)是mybais的返回值為包裝類,且sql語句的定義的返回值類型為:java.lang.Long。查詢數(shù)據(jù)庫為空后,會返回null而不是0L,所以此處需要將方法的返回值類型改為包裝類java.lang.Long:

//Long queryAllNumFromCart(Integer userId); ?//當(dāng)查詢到的數(shù)據(jù)為0條時,會返回null,而不是0,可以改為包裝類

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

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

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

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot中使用 RabbitMQ的教程詳解

    SpringBoot中使用 RabbitMQ的教程詳解

    這篇文章主要介紹了SpringBoot中使用 RabbitMQ的教程詳解,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • 通過Java連接SQL?Server數(shù)據(jù)庫的超詳細(xì)操作流程

    通過Java連接SQL?Server數(shù)據(jù)庫的超詳細(xì)操作流程

    java相對于其他語言(例如c,c++等)連接數(shù)據(jù)庫要方便得多,那么如何連接呢?下面這篇文章主要給大家介紹了關(guān)于通過Java連接SQL?Server數(shù)據(jù)庫的超詳細(xì)操作流程,需要的朋友可以參考下
    2023-03-03
  • 劍指Offer之Java算法習(xí)題精講二叉樹專項(xiàng)訓(xùn)練

    劍指Offer之Java算法習(xí)題精講二叉樹專項(xiàng)訓(xùn)練

    跟著思路走,之后從簡單題入手,反復(fù)去看,做過之后可能會忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會發(fā)現(xiàn)質(zhì)的變化
    2022-03-03
  • Lombok在idea中的使用教程

    Lombok在idea中的使用教程

    Lombok是一個可以通過簡單的注解形式,來幫助我們簡化消除一些必須有但顯得很臃腫(如果getter、setter方法)的Java代碼的工具,通過使用對應(yīng)的注解,可以在編譯源碼的時候生成對應(yīng)的方法,這篇文章主要介紹了Lombok在idea中的使用,需要的朋友可以參考下
    2023-03-03
  • java正則表達(dá)式獲取url的host示例

    java正則表達(dá)式獲取url的host示例

    使用httpclient抓取頁面信息時需要填寫HOST,使用此正則提取抓取URL的HOST內(nèi)容
    2014-02-02
  • java 集合并發(fā)操作出現(xiàn)的異常ConcurrentModificationException

    java 集合并發(fā)操作出現(xiàn)的異常ConcurrentModificationException

    Map在遍歷時候通常 現(xiàn)獲得其鍵值的集合Set,然后用迭代器Iterator來對Map進(jìn)行遍歷。
    2009-06-06
  • Java中關(guān)于isEmpty方法、null以及““的區(qū)別

    Java中關(guān)于isEmpty方法、null以及““的區(qū)別

    這篇文章主要介紹了Java中關(guān)于isEmpty方法、null以及““的區(qū)別,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • SpringBoot中Redis的緩存更新策略詳解

    SpringBoot中Redis的緩存更新策略詳解

    這篇文章主要介紹了SpringBoot中Redis的緩存更新策略,緩存一般是為了應(yīng)對高并發(fā)場景、緩解數(shù)據(jù)庫讀寫壓力,而將數(shù)據(jù)存儲在讀寫更快的某種存儲介質(zhì)中(如內(nèi)存),以加快讀取數(shù)據(jù)的速度,需要的朋友可以參考下
    2023-08-08
  • Spring之@Qualifier注解的具體使用

    Spring之@Qualifier注解的具體使用

    本文主要介紹了Spring之@Qualifier注解的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • Springboot基于maven打包分離lib及resource

    Springboot基于maven打包分離lib及resource

    這篇文章主要介紹了Springboot基于maven打包分離lib及resource,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10

最新評論

太白县| 墨脱县| 益阳市| 大竹县| 奉贤区| 枣强县| 甘南县| 育儿| 贡嘎县| 象州县| 岑溪市| 德惠市| 永年县| 永胜县| 固原市| 聂拉木县| 通化市| 顺平县| 泰州市| 盘锦市| 黑河市| 垫江县| 确山县| 布拖县| 邵阳市| 葫芦岛市| 肥城市| 无棣县| 平乡县| 南漳县| 右玉县| 密山市| 亚东县| 朔州市| 晋江市| 乐平市| 东宁县| 敦化市| 绥阳县| 电白县| 金沙县|