MySQL 数据类型与 Java 类型映射全解析

发布于:2025-07-03 ⋅ 阅读:(17) ⋅ 点赞:(0)

本文详细解析 MySQL 数据类型与 Java 类型的对应关系,涵盖数值、日期、字符串、二进制等所有类型

一、为什么需要了解类型映射?

在数据库应用开发中,数据类型映射是 ORM 框架、JDBC 操作和 API 设计的基础核心。正确的类型映射能:

  1. 避免数据精度丢失(如浮点数)
  2. 防止字符编码问题(中文乱码)
  3. 优化存储空间(选择合适的数据类型)
  4. 提升查询性能(减少隐式类型转换

二、数值类型映射

MySQL 类型 范围/特点 Java 类型 注意事项
TINYINT -128127 / 0255 Byte/Integer 自动装箱类型更常用
SMALLINT -32768~32767 Short/Integer
MEDIUMINT -8388608~8388607 Integer 较少使用
INT/INTEGER -2³¹~2³¹-1 Integer 最常用整型
BIGINT -2⁶³~2⁶³-1 Long 主键、大数量场景
FLOAT(M,D) 单精度浮点数 Float 精度问题:0.1+0.2 != 0.3
DOUBLE(M,D) 双精度浮点数 Double 同上
DECIMAL(M,D) 精确小数(M:总位数,D:小数位) BigDecimal 金融计算必用,避免精度丢失
BIT(M) 位字段(1~64位) byte[]/Boolean JDBC 驱动可能返回 Boolean(M=1) 或 byte[](M>1)

三、日期时间类型映射

MySQL 类型 格式 Java 类型 推荐方案
DATE 'YYYY-MM-DD' java.sql.Date 使用 LocalDate (Java 8+)
TIME 'HH:MM:SS' java.sql.Time 使用 LocalTime (Java 8+)
DATETIME 'YYYY-MM-DD HH:MM:SS' java.sql.Timestamp 使用 LocalDateTime (Java 8+)
TIMESTAMP 时间戳(1970-2038) java.sql.Timestamp 注意时区问题
YEAR 'YYYY' java.sql.Date/Integer 直接使用 Integer 更简单

 

四、字符串类型

4.1 基础字符串类型

MySQL 类型 最大长度 Java 类型 字符集建议
CHAR(M) 255字符 String 定长存储(空格填充)
VARCHAR(M) 65,535字节 String 最常用,按需分配空间
TINYTEXT 255字节 String 短文本

4.2 TEXT 系列类型详解

MySQL 类型 最大长度 Java 类型 使用场景
TEXT 65,535字节 String 文章内容、产品描述
MEDIUMTEXT 16MB String 电子书章节、长文档
LONGTEXT 4GB String 大型XML/JSON、小说全文