MyBatis 通过内置的 jdbcType 枚举类型支持下面的 JDBC 类型
BIT | FLOAT | CHAR | TIMESTAMP | OTHER | UNDEFINED |
TINYINT | REAL | VARCHAR | BINARY | BLOB | NVARCHAR |
SMALLINT | DOUBLE | LONGVARCHAR | VARBINARY | CLOB | NCHAR |
INTEGER | NUMERIC | DATE | LONGVARBINARY | BOOLEAN | NCLOB |
BIGINT | DECIMAL | TIME | NULL | CURSOR | ARRAY |
MyBatis 在设置预处理语句(PreparedStatement)中的参数或从结果集中取出一个值时, 都会用类型处理器将获取到的值以合适的方式转换成 Java 类型。下表描述了一些默认的类型处理器。
| 类型处理器 | Java 类型 | JDBC 类型 | MySQL数据类型 | 备注 |
|---|---|---|---|---|
BooleanTypeHandler | java.lang.Boolean, boolean | 数据库兼容的 BOOLEAN | BIT, BOOLEAN,TINYINT(1) | 建议使用char(1)或者integer来代表布尔类型. |
ByteTypeHandler | java.lang.Byte, byte | 数据库兼容的 NUMERIC 或 BYTE | TINYINT | |
ShortTypeHandler | java.lang.Short, short | 数据库兼容的 NUMERIC 或 SMALLINT | SMALLINT | |
IntegerTypeHandler | java.lang.Integer, int | 数据库兼容的 NUMERIC 或 INTEGER | INTEGER | |
LongTypeHandler | java.lang.Long, long | 数据库兼容的 NUMERIC 或 BIGINT | BIGINT | |
FloatTypeHandler | java.lang.Float, float | 数据库兼容的 NUMERIC 或 FLOAT | REAL | |
DoubleTypeHandler | java.lang.Double, double | 数据库兼容的 NUMERIC 或 DOUBLE | FLOAT,DOUBLE | |
BigDecimalTypeHandler | java.math.BigDecimal | 数据库兼容的 NUMERIC 或 DECIMAL | NUMERIC,DECIMAL | |
StringTypeHandler | java.lang.String | CHAR, VARCHAR | CHAR,VARCHAR,LONGVARCHAR | |
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 | BINARY,VARBINARY,LONGVARBINARY | |
DateTypeHandler | java.util.Date | TIMESTAMP | ||
DateOnlyTypeHandler | java.util.Date | DATE | ||
TimeOnlyTypeHandler | java.util.Date | TIME | ||
SqlTimestampTypeHandler | java.sql.Timestamp | TIMESTAMP | TIMESTAMP,DATETIME | Java中没有DateTime类型,所以直接用了TIMESTAMP |
SqlDateTypeHandler | java.sql.Date | DATE | DATE | |
SqlTimeTypeHandler | java.sql.Time | 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 |

本文介绍了MyBatis框架如何将各种JDBC类型映射到Java类型,并提供了默认类型处理器的详细列表,帮助开发者更好地理解数据类型的转换机制。
1336

被折叠的 条评论
为什么被折叠?



