`

原理分析之二:框架整体设计

阅读更多

 

1.引言

本文主要讲解Mybatis的整体程序设计,理清楚框架的主要脉络。后面文章我们再详细讲解各个组件。

 

2.整体设计

2.1 总体流程

(1)加载配置并初始化

      触发条件:加载配置文件

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

      

(2)接收调用请求

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

      传入参数:为SQLID和传入参数对象

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

          

(3)处理操作请求

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

       传入参数:为SQLID和传入参数对象

       处理过程:

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

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

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

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

        (E)释放连接资源。

       

(4)返回处理结果

将最终的处理结果返回。

 

2.2 功能架构设计

功能架构讲解:

我们把Mybatis的功能架构分为三层:

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

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

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

 

2.3 框架架构设计


 

框架架构讲解:

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

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

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

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

  • 大小: 17.3 KB
  • 大小: 121.6 KB
分享到:
评论
13 楼 qq_32637841 2016-07-20  
非常棒,怎么不更行了呢?我还准备看完这个看源码呢
12 楼 u012499882 2016-04-13  
11 楼 geyaandy 2015-05-04  
10 楼 xlb744868186 2014-11-25  
好,赞一个
9 楼 qnamqj 2014-08-13  
请问下你这些图都是用什么工具画的,学习下,希望不吝赐教,万分感谢
8 楼 hngmduyi 2014-02-18  
 
7 楼 KingZha 2014-01-21  
高人啊 不错不错
6 楼 huanacouple 2013-10-17  
写得很不错,希望继续,真心用脑思考有价值的文字不好找呀!
5 楼 lotuo 2013-07-10  
写的不错!!!
4 楼 ludabing 2013-03-29  
[/color][color=yellow]
3 楼 iamholiday 2012-08-01  
不错支持
2 楼 fengyuan1314 2012-05-21  
支持支持,希望继续写下去...
1 楼 lengyue309 2012-04-19  
写的非常不错!!!

相关推荐

Global site tag (gtag.js) - Google Analytics