一、 Mybatis 类型处理器
Mybatis对于不同数据类型的字段在数据库与JAVA类型之间的转换,都会采用各自类型的处理器(TypeHandlers)进行处理。通过查看Mybatis的源码就能看到相应的类型处理器。你可以重写已有的类型处理器来使用于你的项目需求,具体做法为实现org.apache.ibatis.type.TypeHandler 接口, 或继承一个很便利的类 org.apache.ibatis.type.BaseTypeHandler。具体实现可以参看官网:mybatis类型处理器介绍
二、 Mybatis 类型处理器映射关系图
这里列出一些默认的类型处理器处理JAVA与JDBC数据类型的映射关系图:
类处理器 | 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 |
ongTypeHandler | java.lang.Long, long | 数据库兼容的 NUMERIC 或 BIGINT |
DoubleTypeHandler | java.lang.Double, double | 数据库兼容的 NUMERIC 或 DOUBLE |
BigDecimalTypeHandler | java.math.BigDecimal | 数据库兼容的 NUMERIC 或 DECIMAL |
StringTypeHandler | java.lang.String | CHAR, VARCHAR |
ClobTypeHandler | java.lang.String | CLOB, LONGVARCHAR |
NStringTypeHandler | java.lang.String | NVARCHAR, NCHAR |
NClobTypeHandler | java.lang.String | NCLOB |
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 |
EnumTypeHandler | Enumeration Type | VARCHAR 或任何兼容的字符串类型,用来存储枚举的名称 |
InstantTypeHandler | java.time.Instant | TIMESTAMP |
LocalDateTimeTypeHandler | java.time.LocalDateTime | TIMESTAMP |
LocalDateTypeHandler | java.time.LocalDate | DATE |
LocalTimeTypeHandler | java.time.LocalTime | TIME |
二、 Mybatis JdbcType与数据库类型之间的对应关系图
这里将列出一些Mybatis中JdbcType与Mysql以及Oracle之间的数据类型映射关系图:
JDBCTYPE | MYSQL | ORACLE |
---|---|---|
BIGINT | BIGINT | |
BLOB | BLOB | BLOB |
CHAR | CHAR | CHAR |
CLOB | CLOB | CLOB |
DATE | DATE | DATE |
DOUBLE | DOUBLE | NUMBER |
FLOAT | FLOAT | FLOAT |
INTEGER | INTEGER | INTEGER |
NCHAR | NCHAR | |
NCLOB | NCLOB | |
NUMERIC | NUMERIC | NUMERIC/NUMBER |
SMALLINT | SMALLINT | SMALLINT |
TIMESTAMP | TIMESTAMP/DATETIME | TIMESTAMP |
VARCHAR | VARCHAR | VARCHAR |