mybatis架构原理

Posted Whoooops

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis架构原理相关的知识,希望对你有一定的参考价值。

mybatis架构设计

1.接口层:我们接触最多的就是这层,通过调用接口层提供的api,像selectList()等方法就是此层提供的api。


 基于statementID使用的是传统mybatis提供的apl接口,selectList等方法。

 基于Mapper接口使用的是Mapper代理的方式调用接口。


2.数据处理层:负责处理sql相关的操作,封装的jdbc就在此层。


3.框架支撑层:负责最基础的功能支撑,包括连接管理,事务管理,配置加载和缓存等等一些公用的东西。


mybatis主要构件及相互关系

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 MappedStatement维护了一条<select | update | delete | insert>节点 的封 装
SqlSource 负责根据用户传递的parameterObject,动态地生成SQL语句,将信息封 装到BoundSql对象中,并返回
BoundSql 表示动态生成的SQL语句以及相应的参数信息

总体流程 


(1) 加载配置并初始化

触发条件:加载配置文件 

配置来源于两个地方,一个     是配置文件(主配置文件conf.xml,mapper文件*.xml),—个是java代码中的     注 解,将主配置文件内容解析封装到Configuration,将sql的配置信息加载      成为一个mappedstatement 对 象,存储在内存之中 


(2) 接收调用请求 

触发条件:调用Mybatis提供的API

传入参数:为SQL的ID和传入参数对象 

处理过程:将请求传递给下层的请求处理层进行处理。


 

(3) 处理操作请求 

触发条件:API接口层传递请求过来 

传入参数:为SQL的ID和传入参数对象 处理过程: 

    (A) 根据SQL的ID查找对应的MappedStatement对象。 

   (B) 根据传入参数对象解析MappedStatement对象,得到最终要执行的SQL和执行传入参数。 

    (C) 获取数据库连接,根据得到的最终SQL语句和执行传入参数到数据库执行,并得到执行结果。 

    (D) 根据MappedStatement对象中的结果映射配置对得到的执行结果进行转换处理,并得到最终的处理 结果。

    (E) 释放连接资源。 


(4) 返回处理结果

    将最终的处理结果返回。

以上是关于mybatis架构原理的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis 架构与原理

MyBatis 架构与原理

《深入理解mybatis原理》 MyBatis的架构设计以及实例分析

Mybatis的架构原理与6大核心流程

Mybatis架构原理:主要构件及其相互关系

mybatis架构原理