Integer和int踩過的坑

在作SSM項目時發現一個有趣的bug,在這裏記錄一下。數據庫

數據庫表以下:mybatis

實體類:grade字段初始設定爲int類型測試

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

 

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

 

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

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

仔細想一想Integer和int 的區別,integer的默認值爲null,即Integer能夠區分出未賦值和值爲0的區別,int則沒法表達出未賦值的狀況,im

我又把以前實體類中的grade 類型改成了Integer成功實現了本身想要的。總結

總結:在實體類中儘可能使用Integer修飾,Integer能夠區分出未賦值和值爲0的區別,咱們大部分作判斷都是以「」null「」去判斷的,特在此作個筆記。數據

相關文章
相關標籤/搜索