一、時間、日期類型
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 更方便。