MySQL数据类型 与 Java实体类类型 的对应关系

MySQL数据类型 与 Java实体类类型 的对应关系

以下MySQL数据库中常用的数据类型、对应的Java实体类类型以及具体的例子:

MySQL数据类型 描述 Java实体类类型 举例说明
TINYINT 迷你整型,通常用于存储非常小的整数 byte或Integer 例如:存储年龄,值为0-255之间的整数
SMALLINT 小整型,用于存储较小的整数 Short或Integer 例如:存储学生人数,值为-32,768到32,767之间的整数
MEDIUMINT 中整型,用于存储中等大小的整数 Integer 例如:存储中等规模的项目ID,值为-8,388,608到8,388,607之间的整数
INT(INTEGER) 标准整型,用于存储常用的整数 Integer 例如:存储用户ID,值为-2147483648 到 2147483 647之间的整数
BIGINT 大整型,用于存储非常大的整数 Long 例如:存储订单ID,值为-9233372036854775808 到 -9233372036854775807之间的整数
FLOAT 单精度浮点类型,用于存储小数 Float 例如:存储商品价格,值为3.14这样的浮点数
DOUBLE 双精度浮点类型,用于存储需要更高精度的小数 Double 例如:存储科学计算中的结果,值为3.141592653589793这样的高精度浮点数
DECIMAL 定点小数类型,用于存储精确的十进制数 BigDecimal 例如:存储财务数据,值为12345.6789这样的精确小数
YEAR 年份类型,用于存储年份 Integer或String 例如:存储出生年份,值为2000这样的整数,或在字符串格式下为"2000"
TIME 时间类型,用于存储一天中的时间 LocalTime 例如:存储会议开始时间,值为14:30:00这样的时间
DATE 日期类型,用于存储日期 LocalDate 例如:存储生日,值为2023-04-01这样的日期
DATETIME 日期和时间类型,用于存储日期和时间 LocalDateTime 例如:存储事件发生的日期和时间,值为2023-04-01 14:30:00这样的日期和时间
TIMESTAMP 时间戳类型,用于存储从1970-01-01 00:00:01 UTC到现在的秒数 Timestamp 例如:存储记录创建时间,值为2023-04-01 14:30:00这样的时间戳(在Java中通常以Timestamp对象表示)
CHAR 固定长度字符串,用于存储固定长度的文本 String 例如:存储国家代码,值为"CN"这样的固定长度字符串
VARCHAR 可变长度字符串,用于存储可变长度的文本 String 例如:存储用户名,值为"user123"这样的可变长度字符串
TEXT 长文本类型,用于存储大段文本 String 例如:存储文章内容,值为大段的文本数据
ENUM 枚举类型,用于存储一组预定义的字符串值之一 Enum(自定义) 例如:存储性别,值为"MALE"或"FEMALE"这样的枚举值(在Java中需要定义对应的枚举类)
SET 集合类型,用于存储一组预定义的字符串值 String或自定义类型集合 例如:存储用户兴趣爱好,值为"SPORTS,MUSIC"这样的字符串集合(在Java中可以使用String表示,或使用自定义的集合类)
BINARY 固定长度二进制数据,用于存储固定长度的二进制数据 byte[] 例如:存储图片的二进制数据(固定长度)
VARBINARY 可变长度二进制数据,用于存储可变长度的二进制数据 byte[] 例如:存储用户上传的文件(可变长度)
BLOB 二进制大对象,用于存储大量二进制数据 byte[]或InputStream 例如:存储视频文件的二进制数据(大对象)
BIT(1) 位字段,通常用于存储布尔值(0表示false,1表示true) Boolean 例如:存储用户是否已激活账户,值为 false 或 true(BIT类型 和 布尔类型 存在自动转换关系,具体请往下看
JSON JSON类型数据,用于存储JSON格式的数据 String或自定义JSON对象 例如:存储用户配置信息,值为{"name": "user123", "age": 30}这样的JSON字符串(在Java中可以使用String表示,或使用自定义的JSON对象类)

BIT类型 和 布尔类型自动转换关系
在MySQL中使用BIT(1)类型存储的数据(0或1)与Java实体类中booleanBoolean类型的数据(falsetrue)之间存在自动的转换关系。

  1. 从数据库到Java实体类的转换
    * 当您从MySQL数据库中检索BIT(1)类型的数据时,如果字段的值为0,那么JDBC驱动程序会自动将其转换为Java中的false
    * 如果字段的值为1,那么JDBC驱动程序会自动将其转换为Java中的true
  2. 从Java实体类到数据库的转换
    * 当您使用Java实体类中的数据更新MySQL数据库中的BIT(1)字段时,如果实体类中对应的booleanBoolean字段的值为false,那么JDBC驱动程序会自动将其转换为0并存储到数据库中。
    * 如果实体类中对应的字段的值为true,那么JDBC驱动程序会自动将其转换为1并存储到数据库中。