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 可变宽度列类型之间的映射