型別處理器(typeHandlers)
MyBatis 在設定預處理語句(PreparedStatement)中的引數或從結果集中取出一個值時, 都會用型別處理器將獲取到的值以合適的方式轉換成 Java 型別。下表描述了一些預設的型別處理器。
提示 從 3.4.5 開始,MyBatis 預設支援 JSR-310(日期和時間 API) 。
型別處理器 | Java 型別 | JDBC 型別 |
---|---|---|
BooleanTypeHandler |
java.lang.Boolean , boolean |
資料庫相容的 BOOLEAN |
ByteTypeHandler |
java.lang.Byte , byte |
資料庫相容的 NUMERIC 或 BYTE |
ShortTypeHandler |
java.lang.Short , short |
資料庫相容的 NUMERIC 或 SMALLINT |
IntegerTypeHandler |
java.lang.Integer , int |
資料庫相容的 NUMERIC 或 INTEGER |
LongTypeHandler |
java.lang.Long , long |
資料庫相容的 NUMERIC 或 BIGINT |
FloatTypeHandler |
java.lang.Float , float |
資料庫相容的 NUMERIC 或 FLOAT |
DoubleTypeHandler |
java.lang.Double , double |
資料庫相容的 NUMERIC 或 DOUBLE |
BigDecimalTypeHandler |
java.math.BigDecimal |
資料庫相容的 NUMERIC 或 DECIMAL |
StringTypeHandler |
java.lang.String |
CHAR , VARCHAR |
ClobReaderTypeHandler |
java.io.Reader |
- |
ClobTypeHandler |
java.lang.String |
CLOB , LONGVARCHAR |
NStringTypeHandler |
java.lang.String |
NVARCHAR , NCHAR |
NClobTypeHandler |
java.lang.String |
NCLOB |
BlobInputStreamTypeHandler |
java.io.InputStream |
- |
ByteArrayTypeHandler |
byte[] |
資料庫相容的位元組流型別 |
BlobTypeHandler |
byte[] |
BLOB , LONGVARBINARY |
DateTypeHandler |
java.util.Date |
TIMESTAMP |
DateOnlyTypeHandler |
java.util.Date |
DATE |
TimeOnlyTypeHandler |
java.util.Date |
TIME |
SqlTimestampTypeHandler |
java.sql.Timestamp |
TIMESTAMP |
SqlDateTypeHandler |
java.sql.Date |
DATE |
SqlTimeTypeHandler |
java.sql.Time |
TIME |
ObjectTypeHandler |
Any | OTHER 或未指定型別 |
EnumTypeHandler |
Enumeration Type | VARCHAR 或任何相容的字串型別,用來儲存列舉的名稱(而不是索引序數值) |
EnumOrdinalTypeHandler |
Enumeration Type | 任何相容的 NUMERIC 或 DOUBLE 型別,用來儲存列舉的序數值(而不是名稱)。 |
SqlxmlTypeHandler |
java.lang.String |
SQLXML |
InstantTypeHandler |
java.time.Instant |
TIMESTAMP |
LocalDateTimeTypeHandler |
java.time.LocalDateTime |
TIMESTAMP |
LocalDateTypeHandler |
java.time.LocalDate |
DATE |
LocalTimeTypeHandler |
java.time.LocalTime |
TIME |
OffsetDateTimeTypeHandler |
java.time.OffsetDateTime |
TIMESTAMP |
OffsetTimeTypeHandler |
java.time.OffsetTime |
TIME |
ZonedDateTimeTypeHandler |
java.time.ZonedDateTime |
TIMESTAMP |
YearTypeHandler |
java.time.Year |
INTEGER |
MonthTypeHandler |
java.time.Month |
INTEGER |
YearMonthTypeHandler |
java.time.YearMonth |
VARCHAR 或 LONGVARCHAR |
JapaneseDateTypeHandler |
java.time.chrono.JapaneseDate |
DATE |
參考資料:官方文件