跳到主要内容

7.1 基础类型处理器

基础类型处理器

dbVisitor 有着丰富的类型处理器,为了方便理解这些类型处理器它们有着统一的命名规则。这些规则分为三种:

  1. <Java类型名>TypeHandler<JDBC类型名>TypeHandler
  2. <JDBC类型名>As<Java类型名>TypeHandler<一种类型>As<另一种类型>TypeHandler
  3. <xxx>TypeHandler

组合类型(第一优先级)

信息

下面表格中 Java 类型 和 JDBC 必须全部满足才能选择对应的类型处理器。

JDBC 类型Java 类型类型处理器
CHAR, VARCHAR, LONGVARCHAR, NCHAR, NVARCHAR, LONGNVARCHARjava.time.MonthDayStringAsMonthDayTypeHandler
TINYINT, SMALLINT, INTEGER, BIGINT, FLOAT, DOUBLE, REAL, NUMERIC, DECIMALjava.time.MonthDayIntegerAsMonthDayTypeHandler
CHAR, VARCHAR, LONGVARCHAR, NCHAR, NVARCHAR, LONGNVARCHARjava.time.YearMonthStringAsYearMonthTypeHandler
TINYINT, SMALLINT, INTEGER, BIGINT, FLOAT, DOUBLE, REAL, NUMERIC, DECIMALjava.time.YearMonthIntegerAsYearMonthTypeHandler
CHAR, VARCHAR, LONGVARCHAR, NCHAR, NVARCHAR, LONGNVARCHARjava.time.YearStringAsYearTypeHandler
TINYINT, SMALLINT, INTEGER, BIGINT, FLOAT, DOUBLE, REAL, NUMERIC, DECIMALjava.time.YearIntegerAsYearTypeHandler
CHAR, VARCHAR, LONGVARCHAR, NCHAR, NVARCHAR, LONGNVARCHARjava.time.MonthStringAsMonthTypeHandler
TINYINT, SMALLINT, INTEGER, BIGINT, FLOAT, DOUBLE, REAL, NUMERIC, DECIMALjava.time.MonthIntegerAsMonthTypeHandler
CHAR, VARCHAR, LONGVARCHAR, DATALINK, ROWIDjava.lang.StringStringTypeHandler
NCHAR, NVARCHAR, LONGNVARCHARjava.lang.StringNStringTypeHandler
CLOBjava.lang.StringClobAsStringTypeHandler
NCLOBjava.lang.StringNClobAsStringTypeHandler
SQLXMLjava.lang.StringSqlXmlTypeHandler
CHAR, VARCHAR, LONGVARCHARjava.io.ReaderStringAsReaderTypeHandler
NCHAR, NVARCHAR, LONGNVARCHARjava.io.ReaderNStringAsReaderTypeHandler
CLOBjava.io.ReaderClobAsReaderTypeHandler
NCLOBjava.io.ReaderNClobAsReaderTypeHandler
SQLXMLjava.io.ReaderSqlXmlAsReaderTypeHandler
BINARY, VARBINARY, LONGVARBINARY, ROWIDbyte[]BytesTypeHandler
BLOBbyte[]BlobAsBytesTypeHandler
BINARY, VARBINARY, LONGVARBINARY, ROWIDjava.lang.Byte[]BytesAsBytesWrapTypeHandler
BLOBjava.lang.Byte[]BlobAsBytesWrapTypeHandler
BINARY, VARBINARY, LONGVARBINARYjava.io.InputStreamBytesAsInputStreamTypeHandler
BLOBjava.io.InputStreamBlobAsInputStreamTypeHandler
SQLXMLjava.io.InputStreamSqlXmlAsInputStreamTypeHandler
ARRAYjava.lang.ObjectArrayTypeHandler
DATALINKjava.net.URIStringAsUriTypeHandler
DATALINKjava.net.URLStringAsUrlTypeHandler

单一类型(第二优先级)

信息

下面表格中 Java 类型 和 JDBC 类型只需满足任意一个,即可激活对应的类型处理器。

JDBC 类型Java 类型类型处理器
BIT, BOOLEANjava.lang.Boolean, booleanBooleanTypeHandler
TINYINTjava.lang.Byte, byteByteTypeHandler
SMALLINTjava.lang.Short, shortShortTypeHandler
INTEGERjava.lang.Integer, intIntegerTypeHandler
BIGINTjava.lang.Long, longLongTypeHandler
FLOATjava.lang.Float, floatFloatTypeHandler
DOUBLEjava.lang.Double, doubleDoubleTypeHandler
REAL, NUMERIC, DECIMALjava.math.BigDecimalBigDecimalTypeHandler
-java.lang.NumberNumberTypeHandler (只支持数据读取)
CHARjava.lang.Character, charStringAsCharTypeHandler
NCHAR-NStringAsCharTypeHandler
VARCHAR, LONGVARCHAR, ROWIDjava.lang.StringStringTypeHandler
NVARCHAR, LONGNVARCHAR-NStringTypeHandler
CLOBjava.sql.ClobClobAsStringTypeHandler
NCLOBjava.sql.NClobNClobAsStringTypeHandler
TIMESTAMPjava.util.DateSqlTimestampAsDateTypeHandler
DATE-SqlDateAsDateHandler
-java.sql.DateSqlDateTypeHandler
-java.sql.TimestampSqlTimestampTypeHandler
-java.sql.TimeSqlTimeTypeHandler
TIME-SqlTimeAsDateTypeHandler
-java.time.InstantSqlTimestampAsInstantTypeHandler
-java.time.chrono.JapaneseDateJapaneseDateAsSqlDateTypeHandler
-java.time.YearSqlTimestampAsYearTypeHandler
-java.time.MonthSqlTimestampAsMonthTypeHandler
-java.time.YearMonthSqlTimestampAsYearMonthTypeHandler
-java.time.MonthDaySqlTimestampAsMonthDayTypeHandler
-java.time.LocalDateLocalDateTimeAsLocalDateTypeHandler
-java.time.LocalTimeLocalTimeTypeHandler
-java.time.LocalDateTimeLocalDateTimeTypeHandler
-java.time.ZonedDateTimeOffsetDateTimeAsZonedDateTimeTypeHandler
TIMESTAMP_WITH_TIMEZONEjava.time.OffsetDateTimeOffsetDateTimeTypeHandler
TIME_WITH_TIMEZONEjava.time.OffsetTimeOffsetTimeTypeHandler
-java.math.BigIntegerBigIntegerTypeHandler
-java.io.ReaderStringAsReaderTypeHandler
-java.io.InputStreamBytesAsInputStreamTypeHandler
-java.lang.Byte[]BytesAsBytesWrapTypeHandler
BINARY, VARBINARY, LONGVARBINARYbyte[]BytesTypeHandler
BLOBjava.sql.BlobBlobAsBytesTypeHandler
DATALINKjava.net.URIStringAsUriTypeHandler
-java.net.URLStringAsUrlTypeHandler
JAVA_OBJECT-ObjectTypeHandler
ARRAYjava.lang.Object[]ArrayTypeHandler
SQLXML-SqlXmlTypeHandler
OTHERjava.lang.ObjectUnknownTypeHandler