1
、
读取
MyBatis
配置文件:
mybatis-config.xml
为
MyBatis
的全局配置文件,配置了
MyBatis
的运行环境等信息,例如数据库连接信息。
2
、
加载映射文件。映射文件即
SQL
映射文件,该文件中配置了操作数据库的
SQL
语句,需要在
MyBatis
配置文件
mybatis-config.xml
中加载。
mybatis-config.xml
文件可以加载多个映射文件,每个文件对应数据库中的一张表。
3
、
构造会话工厂:通过
MyBatis
的环境等配置信息构建会话工厂
SqlSessionFactory
。
4
、
创建会话对象:由会话工厂创建
SqlSession
对象,该对象中包含了执行
SQL
语句的所有方法。
5
、
Executor
执行器:
MyBatis
底层定义了一个
Executor
接口来操作数据库,它将根据
SqlSession
传递的参数动态地生成需要执行的 SQL
语句,同时负责查询缓存的维护
6
、
MappedStatement
对象:在
Executor
接口的执行方法中有一个
MappedStatement
类型的参数,
该参数是对映射信息的封装,用于存储要映射的
SQL
语句的
id
、参数等信息。
7
、
输入参数映射:输入参数类型可以是
Map
、
List
等集合类型,也可以是基本数据类型和
POJO
类型。输入参数映射过程类似于 JDBC
对
preparedStatement
对象设置参数的过程。
8
、
输出结果映射:输出结果类型可以是
Map
、
List
等集合类型,也可以是基本数据类型和
POJO
类型。输出结果映射过程类似于 JDBC
对结果集的解析过程。
MyBatis
的功能架构是怎样的
我们把
Mybatis
的功能架构分为三层:
API
接口层:提供给外部使用的接口
API
,开发人员通过这些本地
API
来操纵数据库。接口层一接收
到调用请求就会调用数据处理层来完成具体的数据处理。
数据处理层:负责具体的
SQL
查找、
SQL
解析、
SQL
执行和执行结果映射处理等。它主要的目的是
根据调用的请求完成一次数据库操作。
基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是
共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。
MyBatis
的框架架构设计是怎么样的
这张图从上往下看。
MyBatis
的初始化,会从
mybatis-config.xml
配置文件,解析构造成
Configuration这个类,就是图中的红框。
1
、加载配置:
配置来源于两个地方,一处是配置文件,一处是
Java
代码的注解,将
SQL
的配置信息加载成为一个个MappedStatement
对象(包括了传入参数映射配置、执行的
SQL
语句、结果映射配置),存储在内存中。
2
、
SQL
解析:
当
API
接口层接收到调用请求时,会接收到传入
SQL
的
ID
和传入对象(可以是
Map
、JavaBean或者基本数据类型),
Mybatis
会根据
SQL
的
ID
找到对应的
MappedStatement
,然后根据传入 参数对象对MappedStatement
进行解析,解析后可以得到最终要执行的
SQL
语句和参数。
3
、
SQL
执行:
将最终得到的
SQL
和参数拿到数据库进行执行,得到操作数据库的结果。
4
、结果映射:
将操作数据库的结果按照映射的配置进行转换,可以转换成
HashMap
、
JavaBean
或者基本数据类型,并将最终结果返回。