mysql數據庫字段bigint使用


Mysql里有個數據類型bigint
在java轉換成實體對象時,處理不當容易出現以下異常:
java.lang.ClassCastException: java.lang.Long cannot be cast to java.math.BigInteger

只需要注意以下情況,就可避免此類異常:
當數據庫中該屬性添加unsigned,則在對象中對應的屬性類型應該為BigInteger;
當數據庫中該屬性未添加unsigned,則在對象中對應的屬性類型應該為Long。

可以成功映射為Long的表用的是BIGINT(20),但是出問題的表使用的是BIGINT(20) UNSIGNED。如果不是無符號類型,BIGINT(20)的取值范圍為-9223372036854775808~9223372036854775807。與Java.lang.Long的取值范圍完全一致,mybatis會將其映射為Long;而BIGINT(20) UNSIGNED的取值范圍是0 ~ 18446744073709551615,其中一半的數據超出了Long的取值范圍,Mybatis將其映射為BigInteger。

 

mysql中int、bigint、smallint 和 tinyint的區別詳細介紹

int(M) M指最大顯示寬度。最大有效顯示寬度是255。顯示寬度與存儲大小或類型包含的值的范圍無關。

bigint

從 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型數據(所有數字)。存儲大小為 8 個字節。

int

從 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型數據(所有數字)。存儲大小為 4 個字節。int 的 SQL-92 同義字為 integer。

smallint

從 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型數據。存儲大小為 2 個字節。

tinyint

從 0 到 255 的整型數據。存儲大小為 1 字節。
定義時需要注意是否使用 unsigned 符號類型,再就是顯示補齊寬度值zerofill

(M)  指定了 int 型數值顯示的寬度,如果字段數據類型是 int(4),則:當顯示數值 10 時,在左邊要補上 “00”;

  當顯示數值 100 是,在左邊要補上“0”;

  當顯示數值 1000000 時,已經超過了指定寬度“(4)”,不能輸出,必須小於指定長度的值,不是位數是int對應的大小

  

 

  

 


免責聲明!

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



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