时间:2021-07-01 10:21:17 帮助过:21人阅读
小编最近接触了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(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对应的数据类型还是有一些区别的;同时觉得我总是会把我不熟悉的东西想的很难很难,其实都是自己给自己设的坎儿~~迈过去就好了!
感谢您的阅读,如有不完善之处,还望指教!
MySQL中的数据类型和Java中的对应
标签:net 实体类 存储空间 java name 映射 mys ike 反射