暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

持久层框架Mybatis的架构与原理

Java脱口秀 2019-06-28
259


Mybatis是我们经常用到的持久层框架,今天我们主要来学习一下Mybatis的架构与原理。


Mybatis的层次结构



Mybatis的层次结构


(1)API接口层提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。


(2)数据处理层负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。


(3)框架支撑层负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。


(3)引导层引导层是配置和启动MyBatis 配置信息的方式。MyBatis 提供两种方式来引导MyBatis :基于XML配置文件的方式和基于Java API 的方式。    



Mybatis的架构图



Mybatis的运行原理


(1)加载配置:Mybatis的配置主要来自两个地方,一处是配置文件,一处是Java代码的注解,将SQL的配置信息加载成为一个个MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置),存储在内存中。


(2)SQL解析:当API接口层接收到调用请求时,会接收到传入SQL的ID和传入对象(可以是Map、JavaBean或者基本数据类型),Mybatis会根据SQL的ID找到对应的MappedStatement,然后根据传入参数对象对MappedStatement进行解析,解析后可以得到最终要执行的SQL语句和参数。


(3)SQL执行:将最终得到的SQL和参数拿到数据库进行执行,返回操作数据库得到的结果。


(4)结果映射:将操作数据库的结果按照映射的配置进行转换,可以转换成HashMap、JavaBean或者基本数据类型,并将最终结果返回。


MyBatis的主要构件及其相互关系


MyBatis的主要组件


1)SqlSession:作为MyBatis工作的主要顶层API,表示和数据库交互的会话,完成必要数据库增删改查功能


2)Executor:MyBatis执行器,是MyBatis 调度的核心,负责SQL语句的生成和查询缓存的维护


3)StatementHandler:封装了JDBC Statement操作,负责对JDBC statement 的操作,如设置参数、将Statement结果集转换成List集合。


4)ParameterHandler:负责对用户传递的参数转换成JDBC Statement 所需要的参数,


5)ResultSetHandler:负责将JDBC返回的ResultSet结果集对象转换成List类型的集合;


6)TypeHandler:负责java数据类型和jdbc数据类型之间的映射和转换


7)MappedStatement:维护了一条<select|update|delete|insert>节点的封装, 


8)SqlSource:负责根据用户传递的parameterObject,动态地生成SQL语句,将信息封装到BoundSql对象中,并返回BoundSql表示动态生成的SQL语句以及相应的参数信息


9)Configuration: MyBatis所有的配置信息都维持在Configuration对象之中




文章转载自Java脱口秀,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论