Mybatis源码解析——TypeHandler

TypeHandler

负责JAVA类型与JDBC类型之间的转换,TypeHandler接口的方法分两类:

  1. void setParameter():负责将JAVA类型转换为JDBC类型
  2. T getResult():负责将数据从JDBC类型转换为JAVA类型

BaseTypeHandler为Mybatis提供的抽象类,主要实现交给其子类实现。
TypeHandler用于完成单个参数以及单个列值的类型转换。

TypeHandlerRegister

  //记录JdbcType与TypeHandler之间的关系,前者是个枚举
  private final Map<JdbcType, TypeHandler<?>> JDBC_TYPE_HANDLER_MAP = new EnumMap<JdbcType, TypeHandler<?>>(JdbcType.class);
  //记录JAVA类型与向指定JDBC类型转换时的关系,如String可以转换为char、varchar等类型,所以存在一对多
  private final Map<Type, Map<JdbcType, TypeHandler<?>>> TYPE_HANDLER_MAP = new ConcurrentHashMap<Type, Map<JdbcType, TypeHandler<?>>>();
  //所有TypeHandler类型以及对应对象
  private final Map<Class<?>, TypeHandler<?>> ALL_TYPE_HANDLERS_MAP = new HashMap<Class<?>, TypeHandler<?>>();
  //空TypeHandler集合标识
  private static final Map<JdbcType, TypeHandler<?>> NULL_TYPE_HANDLER_MAP = Collections.emptyMap();

通过多个重载的register()方法像上述集合中注册typeHandler对象;
通过多个重载的getTypeHandler()从上述四个集合中获取对应的TypeHandler对象;

TYpeAliasRegister

提供类的别名注册和管理功能,使用TYPE_ALIEASES字段(Map<String,Class<?>>类型)管理别名与java类型之间的关系,使用registerAlias()完成注册

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值