mybatis源码解析第二课-mybatis总体架构设计

一、myabtis架构图

要学习一个项目,或者说不管学习什么知识,首先你必须要先了解它的总体设计思想,在此基础上再去细分深入研究才能逐渐的去理解作者的意图,让你的学习事半功倍;
1、功能流程层次描述MyBatis的整体架构图
mybatis源码解析第二课-mybatis总体架构设计_第1张图片
2、MyBatis源码包对应的架构图
mybatis源码解析第二课-mybatis总体架构设计_第2张图片

在应用启动的时候,MyBatis解析两种配置文件
SqlMapConfig.xml
SqlMap.xml
SqlMapConfig.xml是在XMLConfigBuilder类中完成解析的
SqlMap.xml是在XMLMapperBuilder中解析完成的,其中把对Statement的解析(即SqlMap.xml中SELECT|INSERT|UPDATE|DELETE定义部分)委托给XMLStatementBuilder来完成。
MyBatis使用的是org.wrc.dom

MyBatis中Executor是核心,围绕着它完成了数据库操作的完整过程。

SQL执行的时序图
mybatis源码解析第二课-mybatis总体架构设计_第3张图片

3、主要的类
SqlSession:作为mybatis工作的主要顶层API,表示和数据库交互的会话,完成必要数据库增删改查功能
Executor:mybatis执行器,是mybatis调度的核心,赋值SQL语句的生成和查询缓存的维护
StatementHandler:封装了JDBC Statement操作,负责对JDBC statement的操作,如设置参数、将Statement结果集转换成list集合
ParameterHandler:负责对用户传递的参数转换成JDBC Statement所需要的参数
ResultSetHandler:负责将JDBC返回的ResultSet结果集对象转换成List类型的集合
TypeHandler:负责java数据类型和jdbc数据类型之间的映射和转换
MappedStatement:维护了一条< select|update|delete|insert>节点的封装
SqlSource:负责根据用户传递的parameterObject,动态地生成SQL语句, 将信息封装到BoundSql对象中,并返回
BoundSql:表示动态生成的SQL语句以及相应的参数信息
Configuration:MyBatis所有的配置信息都维持在Configuration对象之中

https://blog.csdn.net/luanlouis/article/details/40422941
https://blog.csdn.net/Dream__Snow/article/details/79261922

mysql执行过程
mybatis源码解析第二课-mybatis总体架构设计_第4张图片

我们把Mybatis的功能架构分为三层:
(1)API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。
(2)数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。
(3)基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。 [3]

源码调试:
https://blog.csdn.net/a412451848/article/details/82723754
https://blog.csdn.net/qq_18860653/article/details/80605690

源码学习:
http://www.cnblogs.com/dongying/tag/Mybatis深入浅出系列/

https://mp.weixin.qq.com/s/6MTC0KJq8fvshtgRbvvhWQ
https://mp.weixin.qq.com/s/UF6mKtNFcf5XLV2xgYmCBQ

手写mybatis
https://www.jianshu.com/p/73ee8caddc68?open_source=weibo_search
https://mp.weixin.qq.com/s/6MTC0KJq8fvshtgRbvvhWQ

你可能感兴趣的:(mybatis)