啃下MyBatis源码 - MyBatis源码结构

1.MyBatis源码结构

--------------------------------------------------------------------------------------------------------------------------

1.MyBatis源码结构

1.1 源码包功能模块图

啃下MyBatis源码 - MyBatis源码结构

1.2 各包详细功能解析

org.apache.ibatis.logging:包含所有mapper 接口中用到的注解

org.apache.ibatis.binding:生成mapper 接口的动态代理并进行管理

org.apache.ibatis.builder:

  1. 包含Configuration对象所有构建器,主要包括XML、注解2种方式配置解析
  2. BaseBuilder 构建器基类
  3. XMLConfigBuilder 解析configuration.xml配置文件
  4. XMLMapperBuilder 解析Mapper.xml配置文件
  5. XMLStatementBuilder 解析select\update\delete 标签
  6. MapperAnnotationBuilder 注解式Mapper

org.apache.ibatis.cache:

  1. 缓存功能实现、包含各种缓存装饰器
  2. TransactionalCache 二级缓存功能实现

org.apache.ibatis.cursor:实现游标的方式查询数据、游标非常适合处理百万级别的数据查询

org.apache.ibatis.datasource:数据源 包括jndi数据源、连接池功能

org.apache.ibatis.executor:

  1. 包含SQL语句执行器,核心功能包
  2. 功能包括:主键生成功能、执行参数解析功能、执行结果集解析功能、SQL执行器、缓存执行器

org.apache.ibatis.exceptions:框架异常,常见异常:TooManyResultsException

org.apache.ibatis.io:资源文件读取

org.apache.ibatis.jdbc:

  1. JDBC一些操作
  2. SqlRunner SQL执行
  3. ScriptRunner 脚本执行,可以执行建库语句

org.apache.ibatis.logging:

  1. 日志功能,实现多种日志框架的对接
  2. org.apache.ibatis.logging.jdbc 代理所有功能JDBC 操作,实现了在debug模式下能够输出SQL

org.apache.ibatis.mapping:配置文件与实体对象的映射功能,Mapper映射、参数映射、结果映射等

org.apache.ibatis.parsing:

  1. 解析工具包
  2. GenericTokenParser:解析#{} ${} 这种占位符
  3. XPathParser:XPath形式解析XML
  4. PropertyParser: properties解析器

org.apache.ibatis.scripting:动态SQL语言实现,配置文件中<if> <where> <set> <foreach> <choose> 功能就是在这个包实现,借助OGNL表达式,你也可以扩展自己的语言实现功能

org.apache.ibatis.session:

  1. 主要实现SqlSession功能,非常核心包
  2. 官方注释:SqlSession包含了MyBatis工作的所有的Java接口,通过这些接口你可以 执行SQL命令(insert\delete\update\select),获取Mapper,管理实务

org.apache.ibatis.transaction:事务功能实现,包装了数据库连接,处理数据库连接生命周期包括:连接创建,预编译,提交\回滚和关闭

org.apache.ibatis.type:类型处理器,包括所有数据库类型对应Java类型的处理器,如果要实现自己类型处理器就需要实现包下的基础接口

相关文章:

  • 2022-12-23
  • 2021-06-16
  • 2021-07-28
  • 2021-09-17
  • 2021-05-16
  • 2021-09-23
  • 2021-06-05
  • 2019-11-30
猜你喜欢
  • 2022-01-19
  • 2022-12-23
  • 2021-07-09
  • 2021-09-13
  • 2021-08-03
  • 2022-01-14
  • 2021-10-04
相关资源
相似解决方案