轉載:https://www.cnblogs.com/loveer/p/11604423.html
背景
小編最近接觸了Mysql數據庫表反射生成java實體類(POJO)和映射文件(xml文件),使用Netbeans上的jeddict插件生成JPA(JPA是Java Persistence API的簡稱,中文名Java持久層API,是JDK 5.0注解或XML描述對象-關系表的映射關系,並將運行期的實體對象持久化到數據庫中)的圖表,在敲代碼的過程中發現了entity層屬性的數據類型悄悄發生而來改變,原來Mysql和java的數據類型是有對應關系的。
正文
一、類型對應表
注意:Mysql中int 和 integer 同義,他們都對應着java中的long類型。
二 、int、bigint、mediumint、smallint、tinyint的比較
三、易錯點
在做機房的時候,會以為int(4)只能存儲4個長度的數字,int(11)就會存儲11個長度的數字,這是錯誤的。
實際上int(n)所占多少存儲空間並無任何關系。int(3)、int(4)、int(8) 在磁盤上都是占用 4 btyes 的存儲空間。說白了,除了顯示給用戶的方式有點不同外,int(M) 跟 int 數據類型是相同的。
舉例:
int 的值是10 (指定zerofill)
int(8)的顯示結果為 00000010 (左邊填充8個0)
int(5)的顯示結果為 00010(左邊填充3個0)
只是顯示的長度不一樣而已,都是占用四個字節的空間。
對於其他類型(n)中的n也同樣適用,n 代表的並不是存儲在數據庫中的具體長度,如果設定了zerofill屬性,當數據的寬度小於設定的寬度時(2<8),則自動填充0,這只是最后顯示的結果(一種格式化輸出),但是在Mysql中實際存儲的還是10。
總結
在了解數據類型的知識時,發現各種ORM對應的數據類型還是有一些區別的;同時覺得我總是會把我不熟悉的東西想的很難很難,其實都是自己給自己設的坎兒~~邁過去就好了!
感謝您的閱讀,如有不完善之處,還望指教!