為什麼資料庫表的int型別欄位對映到實體類中要使用Integer型別,而不是int型別?...
如果返回欄位值為null,int型別會報錯,Integer不會報錯。因為int型別宣告的是變數,而null是物件所以會報錯。Integer是包裝類,包裝類符合物件的特徵並提供了一些必要的屬性和方法。
int型別的預設值為0,Integer型別的預設值為null。
我們知道,一些框架並沒有要求(實體類 )屬性必須是基本資料型別或者是包裝類,但是我們把屬性宣告為基本資料型別( primitive types directly)或者包裝類 ( wrapping classes for primitives)對我們程式碼的編寫有著深遠的影響。
1,使用基本資料型別的好處
a),使用基本資料型別意味著你所定義的屬性不允許為空,這樣你在獲取該屬性的時候就不可能會得到一個null值。
b),int在java中佔32/64 bits,而Integer佔了16個位元組,所以使用Integer在效能方面要比int差一些。
2,使用包裝類的好處
a),當我們不想給這個屬性設定任何值的時候,我們可以給它一個null值(前提是資料庫的欄位允許插入NULL)。
b),我們可以在pojo類中使用驗證註解對屬性的值做校驗(例如: javax.validation.constraints.NotNull)
4,兩者在實際開發中的比較
a),如果你的資料庫欄位是允許為空的,使用包裝類。如果不允許為空,使用包裝的時候,如果你往資料庫插入null值,此時就會丟擲異常。然後你就可以對異常進行捕獲並處理。
b),使用基本資料型別的時候,如果欄位是NULL,那麼JDBC會返回0,但是這裡會有一個問題。有可能0在你的業務邏輯代表著特定含義,這時候就可能出現一些意想不到的後果。
總結:在專案中去使用包裝型別而不是基本資料型別,這樣可以使你編寫程式碼更簡單,除非有人給你一個更好的理由去使用基本資料型別或者你的上頭要求一定要使用基本資料型別。
相關文章
- SqlSugar code first 欄位為列舉型別,預設生成資料庫欄位為bigint如何設定為int型別SqlSugar型別資料庫
- BigDecimal轉為String型別、int型別Decimal型別
- 關於mysql中欄位定義的型別int、tinyint區別MySql型別
- 強制型別轉換(int)、(int&)和(int*)的區別型別
- INT型別知多少型別
- Java資料型別與資料庫欄位型別對應關係Java資料型別資料庫
- 判斷a是否是int型別資料型別
- int 和 Integer 有什麼區別
- 將list型別對映到資料欄位 @TableField(typeHandler = StringListTypeHandler.class)型別
- java查詢資料庫,int型欄位為null的情況Java資料庫Null
- Ajax接收int型別亂碼型別
- 型別轉換(int 和 String)型別
- MySQL int型別長度的意義是什麼MySql型別
- 如何在 Go 中將 int 型別轉為字串Go型別字串
- 測試Java中的long,int基本型別Java型別
- Java中Short型別轉換為Int型別是如何計算的?原碼、反碼、補碼是什麼?Java型別
- 資料庫中欄位資料型別以及約束資料庫資料型別
- int與Integer的區別
- int和Integer的區別
- ibatis中integer型別BAT型別
- PHP基礎-資料型別-string和int比較PHP資料型別
- python 從list移除-1和非int型別的資料Python型別
- MySQL 修改int型別為bigint SQL語句拼接MySql型別
- TS資料型別:型別別名/聯合型別/字面量型別/型別推論等綱要資料型別
- 什麼是組合資料型別?Python組合資料型別分為幾類?資料型別Python
- TypeScript 對映型別TypeScript型別
- CAPL指令碼中常用到的資料型別轉換——數字型別(int/double)和字串型別(char array)指令碼資料型別字串
- 切片去重(string,int型別去重)型別
- int型別按位元組列印輸出型別
- JSON欄位型別在ORM中的使用JSON型別ORM
- Java中的基本型別包裝類 Integer 類該怎麼使用?Java型別
- 資料型別是什麼?Python的資料型別又有哪些?資料型別Python
- 支援 enum 型別的欄位允許為空插入資料庫型別資料庫
- Java中基本資料型別和包裝型別有什麼區別?Java資料型別
- Oracle資料型別對應Java型別Oracle資料型別Java
- 查詢mysql某張表中的所有資料(欄位)型別MySql型別
- Java 資料型別和 MySql 資料型別對應一覽表JavaMySQL 資料型別
- MYSQL資料庫型別與JAVA型別對應關係MySql資料庫型別Java