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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kgduu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值