mybatis查詢時使用基本數據類型接收報錯-attempted to return null from a method with a primitive return type (int)


一、問題由來

自己在查看日志時發現日志中打印了一行錯誤信息為:

組裝已經放養的寵物數據異常--->Mapper method 'applets.user.mapper.xxxMapper.xxxmyRank attempted to return null from a method with a primitive return type (int).

意思很好理解,就是在某個mapper文件中的xxxmyRank 這個查詢方法返回一個null,可是卻需要返回一個int類型的數,因此報錯。

二、問題分析

fdafdsaf 這個查詢就是一個簡單的查詢,用來查詢一個排名,自己查詢排名的話使用int類型來接收就可以了。最開始測試的時候,也沒什么問題,可是等項目真正上線之后

報出這個問題,才知道之前寫的代碼中存在這個問題。導致這個問題的原因是數據庫沒有查詢到對應的數據,因此返回一個null值,自己寫代碼的時候卻是使用int類型來進行

接收。如下圖所示:

 

三、解決方案

找到問題的原因后,就很好解決,將接收的int類型改為包裝類型Integer類型類進行接收,這樣就可以解決這個問題。因為Integer類型可以為null,不管返回的具體的數值

還是一個null值,都能夠接收。然后在代碼中去進行null值的業務處理即可,問題解決。

 

拓展:這種方式主要是針對於在查詢的時候使用。Java代碼中寫自定義的數字字段時,最好也是使用包裝類型來進行接收,

Byte,Boolean,Short ,Character,Integer,Long,Float,Double.

原理是一樣的,假如查詢的實體類中或者使用實體類來接受前端傳遞的數值,有可能沒有值為null,這時候使用包裝類型就可以很好的解決這個問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM