Integer和int踩過的坑


在做SSM項目時發現一個有趣的bug,在這里記錄一下。

數據庫表如下:

實體類:grade字段初始設定為int類型

在用mybatis對第三條數據進行修改時,希望賦值的更改,未賦值的不更改,測試運行

 

修改后發現數據庫中的grade字段變成了0,這不是我想要的,(按照正常需求應該是原來的數字5)

 

查看了一下日志,發現了貓膩:

 int 類型,在默認情況下不賦值為0,執行到mybatis的更新語句時,被當做數字0,而非null,

仔細想想Integer和int 的區別,integer的默認值為null,即Integer可以區分出未賦值和值為0的區別,int則無法表達出未賦值的情況,

我又把之前實體類中的grade 類型改為了Integer成功實現了自己想要的。

總結:在實體類中盡量使用Integer修飾,Integer可以區分出未賦值和值為0的區別,我們大部分做判斷都是以“”null“”去判斷的,特在此做個筆記。


免責聲明!

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



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