Mybatis系列之架构设计原理

架构初识

 这是在网络上找到的结构图,看图,可以了解到Mybatis的功能架构可以分为三层:

  1. API接口层:对外提供了可以使用的接口API,开发人员通过这些API可以操作数据库,接口层接收到请求之后,就会到数据处理层完成具体的请求操作,mybatis和数据库的交互主要是有两种方式:第一种是通过Mybatis提供的API,还有一种是Mapper代理的方式,也是平常最常见的方式
  2. 数据处理层:负责具体的SQL操作:定位,查找,参数拼接、执行等等,主要的作用是根据调用的请求完成一次数据库的数据交互
  3. 基础服务层:Mybatis提供了连接、事务管理、配置加载等基础服务,都是Mybatis自带的功能,是为了更好服务数据处理层的逻辑


生命周期

 这个图也是在网络上找到的个人感觉比较好的一张图

组件分析

组件描述
SqlSession是Mybatis最主要的API,标识和数据库交互的会话,完成必要的数据库CURD功能
ExecutorMybatis执行器,是Mybatis调度的和信,负责SQL语句的生成和查询缓存的维护
StatementHandler        
封装JDBC Statement操作,负责对JDBC Statement的操作,比如设置入参、回参、封装结果转换成List集合
ParameterHandler
负责对用户传递的参数转换成JDBC Statement所需要的参数
ResultSetHandler
负责将JDBC返回的ResultSet结果集对象转换为List类型的集合
TypeHandler
负责java数据类型和JDBC数据类型之间的映射和转换
MappedStatement
维护了一条<select><update><delete><insert>的封装
SqlSource
负责根据用户传递的parameterObject,动态地生成SQL语句,将信息封装到BoundSql对象中并返回
BoundSql
表示动态生成的SQL语句以及相应的参数信息

流程分析 

1、加载配置并初始化配置信息

这里的配置文件主要是来自主配置文件,也就是mybatis-config.xml核心配置xml文件,还有一个就是java代码种的注解,程序将主配置文件内容解析并封装到Configuration对象,将SQL的配置信息加载成一个MappedStatement对象并存储在内存中

2、接收调用请求

在调用Mybatis提供的API的时候,接收SQL的ID和入参,将请求传递给下游的请求处理层来处理请求

3、处理操作请求

当API接口把请求和参数等信息传递过来之后,解析ID和入参,然后进行一系列的解析、拼接、执行SQL等操作,具体流程如下

  • 根据传递过来的ID查找对应的MappedStatement对象(包含sql语句、参数等等)
  • 根据传入参数对象解析MappedStatement对象,得到最终要执行的SQL(完整的有参数的可以直接在MySQL客户端执行的SQL)
  • 获取数据库连接,根据上述得到的最终SQL,到数据库客户端执行并得到结果
  • 根据MappedStatement对象的结果映射配置(也就是ResultMap)对返回的结果进行转换处理,返回最终定义的实体类对象结果
  • 释放连接资源

4、返回最终的请求结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值