7.1 基础类型处理器
基础类型处理器
dbVisitor 有着丰富的类型处理器,为了方便理解这些类型处理器它们有着统一的命名规则。这些规则分为三种:
<Java类型名>TypeHandler或<JDBC类型名>TypeHandler<JDBC类型名>As<Java类型名>TypeHandler或<一种类型>As<另一种类型>TypeHandler<xxx>TypeHandler
组合类型(第一优先级)
信息
下面表格中 Java 类型 和 JDBC 必须全部满足才能选择对应的类型处理器。
| JDBC 类型 | Java 类型 | 类型处理器 |
|---|---|---|
| CHAR, VARCHAR, LONGVARCHAR, NCHAR, NVARCHAR, LONGNVARCHAR | java.time.MonthDay | StringAsMonthDayTypeHandler |
| TINYINT, SMALLINT, INTEGER, BIGINT, FLOAT, DOUBLE, REAL, NUMERIC, DECIMAL | java.time.MonthDay | IntegerAsMonthDayTypeHandler |
| CHAR, VARCHAR, LONGVARCHAR, NCHAR, NVARCHAR, LONGNVARCHAR | java.time.YearMonth | StringAsYearMonthTypeHandler |
| TINYINT, SMALLINT, INTEGER, BIGINT, FLOAT, DOUBLE, REAL, NUMERIC, DECIMAL | java.time.YearMonth | IntegerAsYearMonthTypeHandler |
| CHAR, VARCHAR, LONGVARCHAR, NCHAR, NVARCHAR, LONGNVARCHAR | java.time.Year | StringAsYearTypeHandler |
| TINYINT, SMALLINT, INTEGER, BIGINT, FLOAT, DOUBLE, REAL, NUMERIC, DECIMAL | java.time.Year | IntegerAsYearTypeHandler |
| CHAR, VARCHAR, LONGVARCHAR, NCHAR, NVARCHAR, LONGNVARCHAR | java.time.Month | StringAsMonthTypeHandler |
| TINYINT, SMALLINT, INTEGER, BIGINT, FLOAT, DOUBLE, REAL, NUMERIC, DECIMAL | java.time.Month | IntegerAsMonthTypeHandler |
| CHAR, VARCHAR, LONGVARCHAR, DATALINK, ROWID | java.lang.String | StringTypeHandler |
| NCHAR, NVARCHAR, LONGNVARCHAR | java.lang.String | NStringTypeHandler |
| CLOB | java.lang.String | ClobAsStringTypeHandler |
| NCLOB | java.lang.String | NClobAsStringTypeHandler |
| SQLXML | java.lang.String | SqlXmlTypeHandler |
| CHAR, VARCHAR, LONGVARCHAR | java.io.Reader | StringAsReaderTypeHandler |
| NCHAR, NVARCHAR, LONGNVARCHAR | java.io.Reader | NStringAsReaderTypeHandler |
| CLOB | java.io.Reader | ClobAsReaderTypeHandler |
| NCLOB | java.io.Reader | NClobAsReaderTypeHandler |
| SQLXML | java.io.Reader | SqlXmlAsReaderTypeHandler |
| BINARY, VARBINARY, LONGVARBINARY, ROWID | byte[] | BytesTypeHandler |
| BLOB | byte[] | BlobAsBytesTypeHandler |
| BINARY, VARBINARY, LONGVARBINARY, ROWID | java.lang.Byte[] | BytesAsBytesWrapTypeHandler |
| BLOB | java.lang.Byte[] | BlobAsBytesWrapTypeHandler |
| BINARY, VARBINARY, LONGVARBINARY | java.io.InputStream | BytesAsInputStreamTypeHandler |
| BLOB | java.io.InputStream | BlobAsInputStreamTypeHandler |
| SQLXML | java.io.InputStream | SqlXmlAsInputStreamTypeHandler |
| ARRAY | java.lang.Object | ArrayTypeHandler |
| DATALINK | java.net.URI | StringAsUriTypeHandler |
| DATALINK | java.net.URL | StringAsUrlTypeHandler |
单一类型(第二优先级)
信息
下面表格 中 Java 类型 和 JDBC 类型只需满足任意一个,即可激活对应的类型处理器。
| JDBC 类型 | Java 类型 | 类型处理器 |
|---|---|---|
| BIT, BOOLEAN | java.lang.Boolean, boolean | BooleanTypeHandler |
| TINYINT | java.lang.Byte, byte | ByteTypeHandler |
| SMALLINT | java.lang.Short, short | ShortTypeHandler |
| INTEGER | java.lang.Integer, int | IntegerTypeHandler |
| BIGINT | java.lang.Long, long | LongTypeHandler |
| FLOAT | java.lang.Float, float | FloatTypeHandler |
| DOUBLE | java.lang.Double, double | DoubleTypeHandler |
| REAL, NUMERIC, DECIMAL | java.math.BigDecimal | BigDecimalTypeHandler |
| - | java.lang.Number | NumberTypeHandler (只支持数据读取) |
| CHAR | java.lang.Character, char | StringAsCharTypeHandler |
| NCHAR | - | NStringAsCharTypeHandler |
| VARCHAR, LONGVARCHAR, ROWID | java.lang.String | StringTypeHandler |
| NVARCHAR, LONGNVARCHAR | - | NStringTypeHandler |
| CLOB | java.sql.Clob | ClobAsStringTypeHandler |
| NCLOB | java.sql.NClob | NClobAsStringTypeHandler |
| TIMESTAMP | java.util.Date | SqlTimestampAsDateTypeHandler |
| DATE | - | SqlDateAsDateHandler |
| - | java.sql.Date | SqlDateTypeHandler |
| - | java.sql.Timestamp | SqlTimestampTypeHandler |
| - | java.sql.Time | SqlTimeTypeHandler |
| TIME | - | SqlTimeAsDateTypeHandler |
| - | java.time.Instant | SqlTimestampAsInstantTypeHandler |
| - | java.time.chrono.JapaneseDate | JapaneseDateAsSqlDateTypeHandler |
| - | java.time.Year | SqlTimestampAsYearTypeHandler |
| - | java.time.Month | SqlTimestampAsMonthTypeHandler |
| - | java.time.YearMonth | SqlTimestampAsYearMonthTypeHandler |
| - | java.time.MonthDay | SqlTimestampAsMonthDayTypeHandler |
| - | java.time.LocalDate | LocalDateTimeAsLocalDateTypeHandler |
| - | java.time.LocalTime | LocalTimeTypeHandler |
| - | java.time.LocalDateTime | LocalDateTimeTypeHandler |
| - | java.time.ZonedDateTime | OffsetDateTimeAsZonedDateTimeTypeHandler |
| TIMESTAMP_WITH_TIMEZONE | java.time.OffsetDateTime | OffsetDateTimeTypeHandler |
| TIME_WITH_TIMEZONE | java.time.OffsetTime | OffsetTimeTypeHandler |
| - | java.math.BigInteger | BigIntegerTypeHandler |
| - | java.io.Reader | StringAsReaderTypeHandler |
| - | java.io.InputStream | BytesAsInputStreamTypeHandler |
| - | java.lang.Byte[] | BytesAsBytesWrapTypeHandler |
| BINARY, VARBINARY, LONGVARBINARY | byte[] | BytesTypeHandler |
| BLOB | java.sql.Blob | BlobAsBytesTypeHandler |
| DATALINK | java.net.URI | StringAsUriTypeHandler |
| - | java.net.URL | StringAsUrlTypeHandler |
| JAVA_OBJECT | - | ObjectTypeHandler |
| ARRAY | java.lang.Object[] | ArrayTypeHandler |
| SQLXML | - | SqlXmlTypeHandler |
| OTHER | java.lang.Object | UnknownTypeHandler |