ClusterJ 为所有常见的 MySQL 数据库类型提供到 Java 类型的映射。基本类型的 Java 对象包装器应该映射到可为空的数据库列。
由于 Java 没有原生无符号数据类型,因此如果可能,应避免在表模式中使用 UNSIGNED
列。
与 JDBC 映射的兼容性。 ClusterJ 的实现方式是在从 Java 类型到数据库的映射方面与 JDBC 驱动程序错误兼容。也就是说,如果您使用 ClusterJ 存储或检索数据,您将获得与直接使用 JDBC 驱动程序或通过 JPA 使用 JDBC 驱动程序相同的值。
下表显示了 ClusterJ 在常见 Java 数据类型和 MySQL 列类型之间使用的映射。为数字、浮点数和可变宽度类型提供了单独的表。
数字类型。 此表显示了 ClusterJ Java 数字数据类型和 MySQL 列类型之间的映射
表 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) |
日期和时间类型。 下表显示了 ClusterJ Java 日期和时间数据类型和 MySQL 列类型之间的映射
表 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 将 MySQL YEAR
类型映射到 Java short
(或 java.lang.Short
),如本节第一个表所示。
java.util.Date
表示日期和时间的方式类似于 Unix,但精度更高,范围更大。Unix 将时间点表示为自 Unix 纪元(1970 年 1 月 1 日)以来的秒数,而 Java 使用自纪元以来的毫秒数。
可变宽度类型。 下表显示了 ClusterJ Java 数据类型和 MySQL 可变宽度列类型之间的映射