跳到主要内容

类型支持

下表给出常用字段的 Java 属性类型建议;可空字段使用包装类型。Java/JDBC 类型见 Java/JDBC 类型关系;枚举见枚举映射

类型映射

数据库字段类型Java 类型说明
TINYINTByte按有符号 TINYINT 建议 Byte;UNSIGNED 应使用更宽类型。
SMALLINTShort覆盖此有符号整数类型的范围。
INTInteger覆盖此有符号整数类型的范围。
BIGINTLong覆盖此有符号整数类型的范围。
FLOATFloat近似数值;不用于要求十进制精确计算的金额。
DOUBLEDouble近似数值;不用于要求十进制精确计算的金额。
DECIMAL(10, 2)BigDecimal保留十进制数值;写入受列精度与小数位限制。
DECIMAL(20, 0)BigInteger / BigDecimal无小数的整数业务可用 BigInteger;统一十进制模型可用 BigDecimal。
BIT(1)Boolean使用布尔语义,不作为普通整数属性。
BOOLEANBooleanMySQL 将其作为 TINYINT(1) 的同义类型;适合 0/1 布尔语义。
CHAR(1)String文本内容;字符长度由列定义约束。
VARCHAR(255)String文本内容;字符长度由列定义约束。
VARBINARY(1000)byte[]二进制内容;不经字符编码转换。
LONGBLOBbyte[]二进制内容;不经字符编码转换。
DATEjava.sql.Date仅日期;不用于保留完整时间戳。
TIMEjava.sql.Time仅时间;文本存储时须使用可解析的时间格式。
DATETIME(3)java.sql.Timestamp保留日期和时间,精度以数据库列定义为准。
VARCHAR(2000)Map / List / Bean保存 JSON 文本时,实体属性配置见JSON 字段映射
JSONMap / List / Bean实体属性配置见 JSON 字段映射

将 TINYINT(1) 作为数字读取

  • 保存开关:使用 Boolean,对应 true/false
  • 保存数字状态码:使用 ByteInteger,连接 URL 加上 tinyInt1isBit=false
jdbc:mysql://localhost:3306/appdb?tinyInt1isBit=false

例如,有符号 TINYINT(1) 保存了 2,默认用 getObject() 读取会得到 true;加上该配置后返回数字 2。明确按整数类型读取时不受此影响。

数组类型

支持将 NULL 读为 Java 空值,但不支持通过通用 JDBC ARRAY 映射绑定、读取或修改非空数组。例如,不能将 Integer[]Types.ARRAY 写入。

需要在一个字段中保存列表时,使用适合的文本或 JSON 列,按JSON 字段映射配置,不要将该字段配置为 JDBC ARRAY。这和把列表展开为 IN 条件是两件事。