mybatis中的TypeHandler设计与实现

TypeHandler主要是用在从java数据写入数据库时,从数据库中读取数据时的从java到jdbc类型之间的转换。

其类层次图为

TypeHandler:主要定义了设置参数、根据列名获取参数,列索引获取参数,从CallableStatement中根据列索引获取参数。

BaseTypeHandler:处理非NULL值的设置及获取参数

其他子类实现对应类型设置及参数获取

TypeHandlerRegistry:处理type到TypeHandler的映射关系

默认的映射关系有

javaTypejdbcTypetypeHandler
Boolean.classnullBooleanTypeHandler
boolean.classnullBooleanTypeHandler
JdbcType.BooleanBooleanTypeHandler
JdbcType.BITBooleanTypeHandler
Byte.classnullByteTypeHandler
byte.classnullByteTypeHandler
JdbcType.TINYINTByteTypeHandler
Short.classnullShortTypeHandler
short.classnullShortTypeHandler
JdbcType.SMALLINTShortTypeHandler
Integer.classnullIntegerTypeHandler
int.classnullIntegerTypeHandler
JdbcType.INTEGERIntegerTypeHandler
Long.classnullLongTypeHandler
long.classnullLongTypeHandler
Float.classnullFloatTypeHandler
float.classnullFloatTypeHandler
JdbcType.FLOATFloatTypeHandler
Double.classNULLDoubleTypeHandler
double.classNULLDoubleTypeHandler
JdbcType.DOUBLEDoubleTypeHandler
Reader.classnullClobReaderTypeHandler
String.classnullStringTypeHandler
String.classJdbcType.CHARStringTypeHandler
String.classJdbcType.CLOBClobTypeHandler
String.classJdbcType.VARCHARStringTypeHandler
String.classJdbcType.LONGVARCHARStringTypeHandler
String.classJdbcType.NVARCHARNStringTypeHandler
String.classJdbcType.NCHARNStringTypeHandler
String.classJdbcType.NCLOBNClobTypeHandler
JdbcType.CHARStringTypeHandler
JdbcType.VARCHARStringTypeHandler
JdbcType.CLOBClobTypeHandler
JdbcType.LONGVARCHARStringTypeHandler
JdbcType.NVARCHARNStringTypeHandler
JdbcType.NCHARNStringTypeHandler
JdbcType.NCLOBNClobTypeHandler
Object.classJdbcType.ARRAYArrayTypeHandler
JdbcType.ARRAYArrayTypeHandler
BigInteger.classnullBigIntegerTypeHandler
JdbcType.BIGINTLongTypeHandler
BigDecimalnullBigDecimalTypeHandler
JdbcType.REALBigDecimalTypeHandler
JdbcType.DECIMALBigDecimalTypeHandler
JdbcType.NUMERICBigDecimalTypeHandler
InputStream.classnullBlobInputStreamTypeHandler
Byte[].classnullByteObjectArrayTypeHandler
Byte[].classJdbcType.BLOBBlobByteObjectArrayTypeHandler
Byte[].classJdbcType.LONGVARBINARYBlobByteObjectArrayTypeHandler
byte[].classnullByteArrayTypeHandler
byte[].classJdbcType.BLOBBlobTypeHandler
byte[].classJdbcType.LONGVARBINARYBlobTypeHandler
JdbcType.BLOBBlobTypeHandler
JdbcType.LONGVARBINARYBlobTypeHandler
Date.classnullDateTypeHandler
Date.classJdbcType.DATEDateOnlyTypeHandler
Date.classJdbcType.TIMETimeOnlyTypeHandler
JdbcType.TIMESTAMPDateTypeHandler
JdbcType.DATEDateOnlyTypeHandler
JdbcType.TIMETimeOnlyTypeHandler
java.sql.Date.classnullSqlDateTypeHandler
java.sql.Time.classnullSqlTimeTypeHandler
java.sql.Timestamp.classnullSqlTimestampTypeHandler
String.classJdbcType.SQLXMLSqlxmlTypeHandler
Instant.class        nullInstantTypeHandler
LocalDateTime.classnullLocalDateTimeTypeHandler
LocalDate.classnullLocalDateTypeHandler
LocalTime.classnullLocalTimeTypeHandler
OffsetDateTime.classnullOffsetDateTimeTypeHandler
OffsetTime.classnullOffsetTimeTypeHandler
ZoneDateTime.class       nullZoneDateTimeTypeHandler
Month.classnullMonthTypeHandler
Year.classnullYearTypeHandler
YearMonth.classnullYearMonthTypeHandler
JapaneseDate.classnullJapaneseDateTypeHandler
Character.classnullCharacterTypeHandler
char.classnullCharacterTypeHandler


版权声明:本文为wuli2496原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。