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实体类对象如下(篇幅原因,我删掉自动生成的getter和setter):

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,严禁使用float、double。
5.如无特殊需要,禁止开发人员使用blob。
6.日期类型字段不能使用varchar或者char,只能使用date、datetime字段类型存放。
7.所有只需要精确到天的字段全部使用date类型,而不应该使用timestamp或者datetime类型。
8.所有需要精确到时分秒的字段均使用datetime,不要使用timestamp类型。
9.不建议使用enum、set类型,使用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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • read函数的用法

    read函数的用法原文出自:https://blog.csdn.net/zbk840901528/article/details/7849644非常感谢网友的分享,对本人很有帮助,谢谢!!!read的用法read函数可以读取文件。读取文件指从某一个已打开地文件中,读取一定数量地字符,然后将这些读取的字符放入某一个预存的缓冲区内,供以后使用。使用格式如下:number=read(handle,buff…

    2022年6月22日
  • javascript数组怎么定义_js中的数组

    javascript数组怎么定义_js中的数组每一门编程语言,都有数组或类似数组的结构,同样的JavaScript(虽然是脚本语言)也不例外,学习JavaScript的数组,我们从新建第一个数组开始。JavaScript中的数组,长度是动态可变的,如果学过其他编程语言的朋友可能对这一点不是很习惯。但事实上反而使得问题变得简单了,因此不需要再定义数组的时候就指定它的大小。

    2022年10月1日
  • 大数据教程(13.1)Flume使用

    大数据教程(13.1)Flume使用

    2021年6月30日
  • IIS7 HTTP.sys远程代码执行漏洞

    IIS7 HTTP.sys远程代码执行漏洞POC:GET/welcome.pngHTTP/1.1Host:www.test.comRange:bytes=0-18446744073709551615显示结果若是包含以下结果证明漏洞存在: RequestedRangeNotSatisfiable 转载于:https://blog.51cto.com/zhpfbk/1878418…

    2022年7月25日
  • 2020爱分析·智能通讯云厂商全景报告[通俗易懂]

    2020爱分析·智能通讯云厂商全景报告[通俗易懂]报告摘要企业面临业务增长的压力,通讯能力建设成为对内提升运营效率,对外提升产品竞争力和客户体验的重要手段,通讯云的场景应用正在加速渗透。基于对国内各行业甲方企业的调研,爱分析认为智能通讯云应用呈现以下趋势:•在提高内部运营效率方面,企业需要通过强化统一通讯能力,及提高办公智能化的方式实现;•对于企业的客服部门或呼叫中心而言,跑马圈地的时代已经过去,随着企业营销与服务渠道多元化,重心在促进营销转化与提升客户体验;•针对各行业的不同业务场景,通讯能力不仅是音视频交互工具的基础,还需..

    2022年5月18日
  • 京东云服务器_docker 京东自动签到

    京东云服务器_docker 京东自动签到众所周知,京东的京豆可以在付款时抵扣现金支付,多攒京豆还是能省下一部分钱的,而且京豆的获取页很简单,其中一种就是通过签到的方式获得,而每天手动签到实在太过麻烦,如果能实现自动化就好了,这时,依靠于openwrt,京东自动签到插件就诞生了,在路由器上设置一下便可以一劳永逸,无需人工全部自动化完成,签到后可以自动将签到详细结果推送到手机的微信上,这种签到方式是在自己的路由器上,完全不用担心安全和隐私泄…

    2022年9月17日

发表回复

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

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