MySQL中的数据类型_请列举MySQL中常见的数据类型

MySQL中的数据类型_请列举MySQL中常见的数据类型还在纠结javaType和jdbcType?MySQL数据类型对应Java什么类型?JdbcType类型和Java对象有什么对应关系?数据库类型的Integer是对应int还是对应Integer?本文带你一探究竟!

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

  我在网上也搜过很多,就是想知道在数据库中的建表语句的字段类型对应Java实体类中属性的类型是什么。

  结果网上一套一套的说法不一,完全不一致,有没有一致点的,不会错的!看我,你就有。

  于是我就无聊到用mybatis-generator插件一一生成对应关系,插件根据数据库建表语句自动生成Java实体类对象。现在开发都是自动生成实体类,我这里也生成后记录一下。

给出数据库图形界面,方便大家理解我在做什么
在这里插入图片描述

sql如下

CREATE TABLE `testtype` (
  `int_type` int unsigned DEFAULT NULL,
  `int_unsigned` int NOT NULL,
  `bigint_unsigned20` bigint DEFAULT NULL,
  `bigint_unsigned255` bigint DEFAULT NULL,
  `big_int` bigint DEFAULT NULL,
  `big_int_255` bigint DEFAULT NULL,
  `varchar` varchar(255) DEFAULT NULL,
  `bit` bit(20) DEFAULT NULL,
  `bit_64` bit(64) DEFAULT NULL,
  `tiny_int` tinyint DEFAULT NULL,
  `tiny_int_unsigned` tinyint unsigned DEFAULT NULL,
  `small_int` smallint DEFAULT NULL,
  `small_int_unsigned` smallint DEFAULT NULL,
  `binary` binary(255) DEFAULT NULL,
  `blob` blob,
  `char_utf8` char(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `char_utf8mb4` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `char_utf8gbk` char(255) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL,
  `date` date DEFAULT NULL,
  `datetime` datetime DEFAULT NULL,
  `timestamp` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `float_type` float DEFAULT NULL,
  `float_unsigned` float unsigned DEFAULT NULL,
  `decimal` decimal(10,0) DEFAULT NULL,
  `numeric` decimal(10,0) DEFAULT NULL,
  `double_type` double DEFAULT NULL,
  `double_unsigned` double unsigned DEFAULT NULL,
  `integer_type` int DEFAULT NULL,
  `integer_unsigned` int unsigned DEFAULT NULL,
  `text` text,
  `time` time DEFAULT NULL,
  `tinytext` tinytext,
  `year` year DEFAULT NULL,
  `enum_type` enum('1','red') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  PRIMARY KEY (`int_unsigned`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

生成的Java实体类对象如下(篇幅原因,我删掉自动生成的gettersetter):

public class testType { 
   
    private Integer intUnsigned;
    private Integer intType;
    private Long bigintUnsigned20;
    private Long bigintUnsigned255;
    private Long bigInt;
    private Long bigInt255;
    private String varchar;
    private byte[] bit;
    private byte[] bit64;
    private Byte tinyInt;
    private Byte tinyIntUnsigned;
    private Short smallInt;
    private Short smallIntUnsigned;
    private String charUtf8;
    private String charUtf8mb4;
    private String charUtf8gbk;
    private Date date;
    private Date datetime;
    private Date timestamp;
    private Float floatType;
    private Float floatUnsigned;
    private Long decimal;
    private Long numeric;
    private Double doubleType;
    private Double doubleUnsigned;
    private Integer integerType;
    private Integer integerUnsigned;
    private Date time;
    private String tinytext;
    private Date year;
    private String enumType;
}

表我给大家列出来了,帅的人已经点赞、关注、收藏一键三连了,谁偷看一下就溜走?

MySQL数据类型 Java实体类属性类型 说明
int Integer 不管是signed还是unsigned,Java实体类型都是Integer
bigint Long 不管是bigint(xxx)括号多少位,不管signed还是unsigned,Java实体类型都是Long
varchar String
bit byte[]
tinyint Byte 不管是signed还是unsigned,Java实体类型都是Byte,在java.lang包下
smallint Short 不管是signed还是unsigned,Java实体类型都是Short
char String 不管char是gbk、utf8、utf8mb4等编码类型,Java实体类型都是String
date Date java.util.Date
datetime Date java.util.Date
timestamp Date java.util.Date
time Date java.util.Date
float Float 不管是signed还是unsigned,Java实体类型都是Float
decimal Long
numeric Long
double Double 不管是signed还是unsigned,Java实体类型都是Double
tinytext String
text String
year Date java.util.Date
enum String

  有些类型插件没有自动转换过来,我就不列举,这里就列举常用的并且插件能转换过来的,这肯定是对的没错。

后续设计表规范内容:

1.从8.0.17版本开始,TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT类型的显示宽度将失效。比如bigint(20),如果用navicat直接保存长度20,最终在建表语句被保存为bigint,长度会失效。
2.自增字段类型必须是整型而且必须是unsigned,推荐int或者bigint,并且自增字段必须是主键或者主键的一部分,我个人写物理主键id一般就是bigint unsigned
3.手机号使用varchar(20),不要使用整数。
4.对于精确浮点型数据存储,需要使用decimal,严禁使用floatdouble
5.如无特殊需要,禁止开发人员使用blob
6.日期类型字段不能使用varchar或者char,只能使用datedatetime字段类型存放。
7.所有只需要精确到天的字段全部使用date类型,而不应该使用timestamp或者datetime类型。
8.所有需要精确到时分秒的字段均使用datetime,不要使用timestamp类型。
9.不建议使用enumset类型,使用tinyint替代。
10.仅仅只有单个字符的字段用char(1),比如性别字段。
11.按照规范,每个列定义的时候必须加上comments,我上面举例子偷懒了所以没写。
12.数据库的字符集只能选择utf8mb4,如果需要导出,也需要显式选择utf8mb4作为导出格式。

欢迎一键三连~

有问题请留言,大家一起探讨学习

———————-Talk is cheap, show me the code———————–

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/197626.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JAVA实现QQ登录、注册等功能

    JAVA实现QQ登录、注册等功能本文主要应用的技术有:GUI、JDBC、多线程实现的功能具体如下:1、登录功能2、注册功能3、是否隐藏密码的选择以及实现功能4、选择性别功能5、密码与确认密码功能6、登录页面实时展示当前的时间7、当登录时用户名与密码在数据库中没有相匹配的数据,则会跳转到注册页面上去。8、同样,注册完毕后,数据会运用JDBC将数据写入数据库中,然后跳转回登录页面。…

    2022年8月10日
    6
  • 1045 Access denied for user ‘root’@’localhost’ (using password: YES)[通俗易懂]

    1045 Access denied for user ‘root’@’localhost’ (using password: YES)[通俗易懂]MySQL连接错误,使用Navicat连接MySQL出现错误:1045Accessdeniedforuser’root’@’localhost'(usingpassword:YES)解决方法:编辑mysql配置文件my.ini(在mysql的安装目录下,不同电脑可能不一样,参考目录①D:\ProgramFiles\MySQL\MySQLServer5.0\my….

    2022年5月13日
    76
  • 使用linux shell脚本大范围寻找ping不通的机器

    使用linux shell脚本大范围寻找ping不通的机器

    2021年8月26日
    47
  • 苹果手机怎么抓取京东ck(ios获取京东cookie)

    安卓手机抓取京东cookie手机下载Alook浏览器下载地址https://ddayh.lanzoui.com/ioHNNuzjunc打开Alook浏览器访问京东手机版网址https://m.jd.com/点击网页的右上角登陆账号(短信验证登录)登录完成以后点击浏览器中间的菜单键右滑一下找到工具箱->最下面的开发者工具->Cookies,拷贝注意获取到cookie后不能直接退出,否则cookie会立刻失效,关闭窗口即可。获取多账号cookie可以打开无痕窗口,没获取到一

    2022年4月15日
    875
  • pad图和n-s图_N S W

    pad图和n-s图_N S W(未完成_N-S图、PAD图概念未写)1、记录StudentRecord给出即将大学毕业的学生的姓名和平均分(GPA)。我们的目的是建立一个参加毕业典礼的学生表。候选毕业的学生表从文件”StudRecs”读入。因为学校规定:GPA低于minGPA的学生不能毕业,因此那些平均分低于minGPA的学生不参加毕业典礼。另外,记录那些选择不参加毕业典礼的学生名单,将名单保存至文件”NoAttend”中,按每行一个学生姓名保存。删除这些选择不参加毕业典礼的学生,最终生成参加毕业典礼的学生表。2、画出下列程序流

    2022年8月13日
    5
  • 树莓派3B 开箱配置

    树莓派3B 开箱配置概述最近看到淘宝推荐有树莓派3B+,价格和3B一样,增加了千兆网络,和5GWifi,性能也有一些提升,然后就下单买了。可是没看清楚介绍,原来3B+是预售,不是马上有货,然后那家店的3B+是单独预售购买的,如果点了套装,实际上卖的是3B。于是满怀兴奋的拆开快递后,呈现一脸懵B状态。本来纠结要不要退货重买,不过想想其实性能也不是差距十分大,既然都收到了,不如先研究一番,等到19年树莓派4出的时候…

    2022年6月25日
    30

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号