MySQL中的数据类型和Java中的对应

转载: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对应的数据类型还是有一些区别的;同时觉得我总是会把我不熟悉的东西想的很难很难,其实都是自己给自己设的坎儿~~迈过去就好了!

        感谢您的阅读,如有不完善之处,还望指教!

posted @ 2020-07-30 20:19  路要一步一步走  阅读(8321)  评论(1编辑  收藏  举报