一、时间、日期类型
1、相关基础
【1】在 Java 中, 代表时间和日期的类型包括:java.util.Date
和 java.util.Calendar
。此外,在 JDBC API 中还提供了 3 个扩展了 java.util.Date
类的子类:java.sql.Date, java.sql.Time 和 java.sql.Timestamp
,这三个类分别和标准 SQL 类型中的 DATE、TIME
和TIMESTAMP
类型对应。
【2】在标准 SQL 中, DATE
类型表示日期, TIME
类型表示时间,TIMESTAMP
类型表示时间戳,同时包含日期和时间信息。
2、如何进行映射?
【1】因为java.util.Date
是java.sql.Date, java.sql.Time 和 java.sql.Timestamp
的父类,所以java.util.Date
可以对应标准SQL类型中的DATE、TIME和TIMESTAMP
。
【2】基于【1】,在设置持久化类的DATE类型时,设置为java.util.Date
。
【3】如何把java.util.Date
映射为DATE、TIME和TIMESTAMP
?可以通过property
中的type
属性进行映射。
例如:
<property name="date" type="timestamp">
<column name="date"/>
</property>
<!--或者-->
<property name="date" type="time">
<column name="date"/>
</property>
<!--或者-->
<property name="date" type="date">
<column name="date"/>
</property>
二、大对象类型
- 在 Java 中,
java.lang.String
可用于表示长字符串(长度超过 255), 字节数组 byte[] 可用于存放图片或文件的二进制数据。此外,在 JDBC API 中还提供了java.sql.Clob
和java.sql.Blob
类型,它们分别和标准 SQL 中的 CLOB 和 BLOB 类型对应。CLOB
表示字符串大对象(Character Large Object)
,BLOB
表示二进制对象(Binary Large Object)
。 - Mysql 不支持标准 SQL 的 CLOB 类型,在 Mysql 中,用 TEXT、MEDIUMTEXT 及 LONGTEXT 类型来表示长度操作 255 的长文本数据。
- 在持久化类中, 二进制大对象可以声明为
byte[]
或java.sql.Blob
类型;字符串可以声明为java.lang.String
或java.sql.Clob
。 - 实际上在 Java 应用程序中处理长度超过 255 的字符串,使用 java.lang.String 比 java.sql.Clob 更方便。