初窥Mybatis初始化
Slags 人气:0
# 引言
这篇文章呢,主要是讲Mybtais的两种方式的源码剖析:传统方式以及Mapper代理方式,初次探索Mybatis源码,希望大佬勿喷并且指正错误,谢谢!
个人博客:www.fqcoder.cn
# 一、Mybatis架构原理
### 1.架构图
首先,让我们来看看下面这张图:
![image-20200305163124096](https://img-blog.csdnimg.cn/20200307142752856.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNjk1ODAy,size_16,color_FFFFFF,t_70)
我们吧Mybtais功能架构可以分为三层:
1.接口层:提供给外部使用的接口API,开发人员通过这些本地API来操作数据库。接口一层接收到调用请求就会调用数据处理来完成具体的数据处理。
MyBatis和数据库交互有两种方式:(也是我们接下来需要死磕的目标)
a.使用传统的Mybatis提供的API
b.使用Mapper代理的方式
2.数据处理层:负责具体的SQL查找、SQL解析、SQL执行、结果处理和映射等,它主要的目的是根据调用的请求完成一次数据库的操作。
3.框架支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。
### 2.主要构件及其相互关系
| 构件 | 描述 |
| :--------------: | ------------------------------------------------------------ |
| SqlSession | 作为MyBatis工作主要顶层API,表示和数据库交互的会话,完成必要数据库
增删改查功能 | | Executor | Mybatis执行器,是Mybatis调度的核心,负责SQL语句的生成和查询缓存的维护 | | StatementHandler | 封装了JDBC Statemenet操作,负责对JDBC Statement的操作,如设置参数、
将Statement结果集转换成List集合 | | ParameterHandler | 负责对用户传递的参数转换成JDBC Statement所需要的参数 | | ResultSetHandler | 负责将JDBC返回的ResultSet结果集对象转换成List类型的集合 | | TypeHandler | 负责java数据类型和jdbc数据类型之间的映射和转换 | | MappedStatement | MappedStatement维护了一条
增删改查功能 | | Executor | Mybatis执行器,是Mybatis调度的核心,负责SQL语句的生成和查询缓存的维护 | | StatementHandler | 封装了JDBC Statemenet操作,负责对JDBC Statement的操作,如设置参数、
将Statement结果集转换成List集合 | | ParameterHandler | 负责对用户传递的参数转换成JDBC Statement所需要的参数 | | ResultSetHandler | 负责将JDBC返回的ResultSet结果集对象转换成List类型的集合 | | TypeHandler | 负责java数据类型和jdbc数据类型之间的映射和转换 | | MappedStatement | MappedStatement维护了一条
加载全部内容