MyBatis 源码分析-项目总览

此外,https://mybatis.org/mybatis-3/zh/index.html MyBatis官方也提供了很不错的中文文档。对于使用中有碰到一些问题,可以参考一下。

2.模块划分

MyBatis在项目模块划分还是很清晰的。各个模块层次以及具体作用,如下:

模块 层次 定义
session   接口层   提供给外部使用的接口API  
scripting   核心处理层   解析映射文件中的动态SQL节点。并形成数据库可执行的SQL语句。  
mapping   核心处理层   映射  
builder   核心处理层   配置解析  
executor   核心处理层   执行器模块,串联整个执行流程。  
plugin   核心处理层   插件模块:提供插件接口,通过自定义插件方式对MyBatis进行拓展  
cursor   核心处理层   游标模块  
reflection   基础支持层   反射模块:mybatis专门对反射模块进行封装。提供更加简单易用的API  
type   基础支持层   类型转换模块:Mybatis为简化配置提供了别名机制。提供java类型与JDBC类型转换  
logging   基础支持层   日志模块:主要是集成第三方日志  
io   基础支持层   资源加载模块:对类加载器进行了封装。确定类加载器顺序,并提供加载文件,以及其他资源的功能  
datasource   基础支持层   数据源模块:mybatis自身提供响应的数据源实现,也提供与第三方数据集成的接口。  
transaction   基础支持层   事务管理模块:Mybatis 对数据库的事务进行了抽象  
parsing   基础支持层   解析器模块:提供两个功能:1. 对XPath进行封装 2为处理动态sql语句中的占位符提供支持  
cache   基础支持层   缓存模块:提供一级缓存、二级缓存。优化查询  
binding   基础支持层   Binding模块:将自定义的接口与映射配置文件关联起来。通过调用mapper接口完成数据库执行。  
exceptions   基础支持层   异常处理  
annotations   基础支持层   注解模块  
jdbc   其他   JDBC模块  
lang   其他   Lang模块  
整体结构

整体分为三层:

接口层:定义了MyBatis暴露给应用程序调用的API。

核心处理层:实现了MyBatis的核心处理流程,包括MyBatis初始化以及完成一次数据库操作的涉及的全部流程。

基础支持层:为核心处理层提供了良好的基础支撑。例如:反射、类型转换、日志、缓存、事务等模块。

MyBatis 源码分析-项目总览

3.1 基础支持层 3.1.1 反射模块

对应reflection包

Java中的反射虽然功能强大,但对大多数开发人员来说,写出高质量的反射代码还是有一定难度的。MyBatis 中专门提供了 反射模块,该模块对Java原生的反射进行了良好的封装,提供了更加简洁易用的API, 方便上层使调用,并且对反射操作进行 了一系列优化,例如缓存了类的元数据,提高了反射操作的性能。 3.1.2 类型转换模块

对应type包

正如前面示例所示,MyBatis 为简化配置文件提供了别名机制,该机制是类型转换模块的主要功能之一。 类型转换模块的 另-一个功能是实现JDBC类型与Java类型之间的转换,该功能在为SQL语句绑定实参以及映射查询结果集时都会涉及。在为 SQL语句绑定实参时,会将数据由Java类型转换成JDBC类型;而在映射结果集时,会将数据由JDBC类型转换成Java类型。类 型转换模块的具体原理在第2章详述。 3.1.3 日志模块

对应logging包

无论在开发测试环境中,还是在线上生产环境中,日志在整个系统中的地位都是非常重要的。良好的日志功能可以帮助开发人 员和测试人员快速定位Bug代码,也可以帮助运维人员快速定位性能瓶颈等问题。目前的Java世界中存在很多优秀的日志框 架,例如Log4j、Log4j2、 slf4j 等。MyBatis 作为-一个设计优良的框架,除了提供详细的日志输出信息,还要能够集 成多种日志框架,其日志模块的一个主要功能就是集成第三方日志框架。 3.1.4 资源加载模块

对应io包

资源加载模块主要是对类加载器进行封装,确定类加载器的使用顺序,并提供了加载类文件以及其他资源文件的功能。 3.1.5 解析器模块

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzdgsj.html