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实体类中boolean
或Boolean
类型的数据(false
或true
)之间存在自动的转换关系。
- 从数据库到Java实体类的转换:
* 当您从MySQL数据库中检索BIT(1)
类型的数据时,如果字段的值为0,那么JDBC驱动程序会自动将其转换为Java中的false
。
* 如果字段的值为1,那么JDBC驱动程序会自动将其转换为Java中的true
。- 从Java实体类到数据库的转换:
* 当您使用Java实体类中的数据更新MySQL数据库中的BIT(1)
字段时,如果实体类中对应的boolean
或Boolean
字段的值为false
,那么JDBC驱动程序会自动将其转换为0并存储到数据库中。
* 如果实体类中对应的字段的值为true
,那么JDBC驱动程序会自动将其转换为1并存储到数据库中。