主要工作流程
- 解析配置文件
包括全局配置文件和映射器配置文件,这里面包含了如何控制 MyBatis 的行为,和对数据库下达的指令,也就是SQL 信息,最终解析成一个 Configuration 对象。 - 构建工厂
要获得会话,必须有一个会话工厂SqlSessionFactory,它里面又必须包含我们的所有的配置信息,所以我们会通过一个Builder 来创建工厂类 - 操作数据库的接口
操作数据库的接口,它在应用程序和数据库中间,代表跟数据库之间的一次连接:这个就是 SqlSession 对象 - SQL执行
MyBatis 是对 JDBC 的封装,也就是意味着底层一定会出现 JDBC 的一些核心对象,比如执行 SQL 的 Statement,结果集 ResultSet。在 Mybatis 里面,SqlSession 只是提供给应用的一个接口,还不是 SQL 的真正的执行对象,SqlSession 持有了一个 Executor 对象,用来封装对数据库的操作。在执行器 Executor 执行 query 或者 update 操作的时候我们创建一系列的对象,来处理参数、执行 SQL、处理结果集,这里我们把它简化成一个对象:StatementHandler,在接下来的源码章节再去深入了解其他的对象。
工作流程图如下:
image.png架构分层与模块划分
在 MyBatis 的主要工作流程里面,不同的功能是由很多不同的类协作完成的,它们分布在 MyBatis jar 包的不同的 package 里面。
我们来看一下 MyBatis 的 jar 包(基于 3.5.1),
image.png
跟 Spring 一样,MyBatis 按照功能职责的不同,所有的 package 可以分成不同的工作层次
- 接口层
首先接口层是我们使用最多的。核心对象是 SqlSession,它是上层应用和 MyBatis打交道的桥梁,SqlSession 上定义了非常多的对数据库的操作方法。接口层在接收到调用请求的时候,会调用核心处理层的相应模块来完成具体的数据库操作。 - 核心层
- 把接口中传入的参数解析并且映射成 JDBC 类型
- 解析 xml 文件中的 SQL 语句,包括插入参数,和动态
- 执行 SQL 语句
- 处理结果集,并映射成 Java 对象。
插件也属于核心层,这是由它的工作方式和拦截的对象决定的
- 基础支持层
基础支持层主要是一些抽取出来的通用的功能(实现复用),用来支持核心处理层的功能。比如数据源、缓存、日志、xml 解析、反射、IO、事务等等这些功能
架构图如下:
image.png
——学自咕泡学院
网友评论