ClusterJ 为所有常见的 MySQL 数据库类型提供了到 Java 类型的映射。原始类型的 Java 对象包装器应映射到可为空的数据库列。
由于 Java 没有本机无符号数据类型,
UNSIGNED
因此应尽可能避免在表模式中使用列。
与 JDBC 映射的兼容性。 ClusterJ 的实现是为了在从 Java 类型到数据库的映射方面与 JDBC 驱动程序保持错误兼容。也就是说,如果您使用 ClusterJ 来存储或检索数据,您将获得与直接或通过 JPA 使用 JDBC 驱动程序相同的值。
下表显示了 ClusterJ 在常见 Java 数据类型和 MySQL 列类型之间使用的映射。为数字、浮点和可变宽度类型提供了单独的表格。
数字类型。 下表显示了 Java 数字数据类型和 MySQL 列类型之间的 ClusterJ 映射:
表 4.1 ClusterJ Java 数字数据类型和 MySQL 列类型之间的映射
Java数据类型 | MySQL 列类型 |
---|---|
boolean ,
Boolean
|
BIT(1) |
byte ,
Byte
|
BIT(1) 到
BIT(8) ,
TINYINT
|
short ,
Short
|
BIT(1) 到
BIT(16) ,
SMALLINT ,
YEAR
|
int ,
Integer
|
BIT(1) 到
BIT(32) ,
INT
|
long ,
Long
|
BIT(1) 到
BIT(64) ,
BIGINT ,
BIGINT
UNSIGNED
|
float ,
Float
|
FLOAT |
double ,
Double
|
DOUBLE |
java.math.BigDecimal |
NUMERIC ,
DECIMAL
|
java.math.BigInteger |
NUMERIC (精度 = 0),
DECIMAL (精度 = 0) |
日期和时间类型。 下表显示了 Java 日期和时间数据类型与 MySQL 列类型之间的 ClusterJ 映射:
表 4.2 ClusterJ Java 日期和时间数据类型与 MySQL 列类型之间的映射
Java数据类型 | MySQL 列类型 |
---|---|
Java.util.Date |
DATETIME ,
TIMESTAMP ,
TIME ,
DATE
|
Java.sql.Date |
DATE |
Java.sql.Time |
TIME |
Java.sql.Timestamp |
DATETIME ,
TIMESTAMP
|
ClusterJ 将 MySQLYEAR
类型映射到 Java short
(或
java.lang.Short
),如本节第一个表中所示。
java.util.Date
表示日期和时间的方式与 Unix 类似,但精度更高,范围更大。Unix 将时间点表示为自 Unix 纪元(1970 年 1 月 1 日)以来的 32 位有符号秒数,而 Java 使用自该纪元以来的 64 位有符号毫秒数。
可变宽度类型。 下表显示了 Java 数据类型和 MySQL 可变宽度列类型之间的 ClusterJ 映射: