Mybatis总体架构图
Mybatis的架构分层清晰,且功能模块独立,相互协作,使得Mybatis成为一个广泛使用的优秀ORM框架。 Mybatis的架构图如下图所示:
对外接口层
Mybatis对外提供了数据的查询,新增,更新,删除,配置维护等接口,如下图所示:
| 模块 | 功能层级 | 功能说明 |
|---|---|---|
| session | 接口层 | 提供外部使用的API |
核心处理层
Mybatis提供给外部API,调用后,API内部会使用核心处理层提供的能力进行数据处理,信息如下图所示:
| 模块 | 功能层级 | 功能说明 |
|---|---|---|
| builder | 核心处理层 | 配置解析 |
| scripting | 核心处理层 | 解析映射文件中的动态SQL节点,并形成对应数据库可以执行的SQL语句 |
| mapping | 核心处理层 | 映射,如参数映射,结果映射 |
| executor | 核心处理层 | 执行器模块,串联整个SQL执行流程 |
| cursor | 核心处理层 | 游标模块 |
| pluguin | 核心处理层 | 插件模块,提供插件接口,用户自定义插件扩展mybatis的功能 |
基础支持层
Mybatis提供给外部API,调用后,API内部会使用核心处理层提供的能力进行数据处理,信息如下图所示:
| 模块 | 功能层级 | 功能说明 |
|---|---|---|
| reflection | 基础支持层 | 反射实现,mybatis进行了封装,提供API,易于使用,其他大多模块会使用到 |
| type | 基础支持层 | Mybatis提供的别名机制,方便JDBC与JAVA类型之间转换 |
| logging | 基础支持层 | 集成第三方日志框架,支持用户自定义日志实现 |
| io | 基础支持层 | 资源加载模块,对于类加载进行封装,确定了类加载顺序,提供文件加载能力 |
| datasource | 基础支持层 | 数据源模块,Mybatis提供响应的数据源实现,也提供API支持第三方数据源 |
| transaction | 基础支持层 | 事务管理模块,Mybatis对事务进行了抽象 |
| parsing | 基础支持层 | 解析器模块,提供了XPath进行封装, 处理动态SQL语句中占位符的支持 |
| cache | 基础支持层 | 缓存模块,提供了一级,二级缓存,优化缓存 |
| binding | 基础支持层 | 绑定模块,自定义的接口与配置文件的绑定,通过接口进行数据操作 |
| exceptions | 基础支持层 | 异常处理模块 |
| annotations | 基础支持层 | 注解模块 |
| jdbc | 基础支持层 | JDBC模块 |
| lang | 基础支持层 | Lang模块 |
| util | 基础支持层 | 通用工具类 |
内如错误与丰富度,会在后续持续学习中更正与补充