4.2.2.5 ClusterJ MySQL和Java数据类型的映射

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


笔记

ClusterJ 将 MySQLYEAR 类型映射到 Java short(或 java.lang.Short),如本节第一个表中所示。

java.util.Date 表示日期和时间的方式与 Unix 类似,但精度更高,范围更大。Unix 将时间点表示为自 Unix 纪元(1970 年 1 月 1 日)以来的 32 位有符号秒数,而 Java 使用自该纪元以来的 64 位有符号毫秒数。

可变宽度类型。  下表显示了 Java 数据类型和 MySQL 可变宽度列类型之间的 ClusterJ 映射:

表 4.3 此表显示了 Java 数据类型和 MySQL 可变宽度列类型之间的 ClusterJ 映射。

Java数据类型 MySQL 列类型
String CHAR, VARCHAR, TEXT
byte[] BINARY, VARBINARY, BLOB

笔记

BINARY从 MySQL 、 VARBINARYBLOB列值映射到 Java 字节数组 时,不执行转换二进制数据。数据完全按照存储的方式呈现给应用程序。