0%

mybatis源码学习(一)

大纲

mybatis代码结构分为三个大部分

  • 接口层 提供SqlSession
  • 核心层
  • 基础支持层 包含: 解析器模块,反射器模块,日志模块,类型转换模块 。。。 (待完善)

基础支持层

解析器模块:

这个模块主要是用于解析Xml文件,有mybatis-config.xml 和 Mapper.xml 等。 

包含多个重点类: Xnode 是一个包装Dom的node类,用于解析属性信息。 使用到了 XpathParse 类 解析路径,这个parse使用了通用占位符解析,可以对属性值的占位符进行替换。 支持默认值。

反射器模块

这个模块是mybatis增强后的反射模式,提供Reflector 每个对象对应一个类。 对这个类进行属性解析,方法,构造方法等的记录,能够支持操纵类。 

类型转换模块

这个模块主要作用是用于对 JavaType和JdbcType进行互相转换。 由于mysql的字段类型和Java的字段类型不一致,所以才有的这个模块。 这里使用TypeHandler 接口定义了 设置属性和获取属性的方法。 有一个BaseTypeHandler 抽象实现类,实现了空值的设置和获取方法,非空置的处理 交给对应子类实现。 

类型转换模块的使用是通过TypeHandlerRegiester 进行注册管理。 mybatis默认实现了java所有常用类型对应TypeHandler的实现方法。 可以支持自定义类型实现方法。 通过在mybatis-config.xml 文件添加 typeHandler 配置指定实现类。 

类型转换模块提供了 类型别名功能,对表名,列名等支持设置别名。 另外也支持对类设置别名。 mybatis对常用类型默认直接设置了别名。 

日志模块

这个模块是对常用第三方日志组件的封装,通过适配器模式定义了 Log接口。 为每一个Log组件实现了具体方法。 
 

Welcome to my other publishing channels