想想每一次的源码分析都应该有自己的一个学习方式,分析方式,或者说是自己的一个套路.
首先总结下自己的源码分析学习方式:
1 首先要知道该源码的架构,以及每一个模块之间都有些什么功能.
2 框架在应用启动过程中,哪些模块分别做哪些事 ,跟跟代码,然后自己注释下.
3 最后再看看要完成某些功能框架做了哪些操作,一样的源码跟跟.
4 看看前人的一些经验,或者官网来更加透彻的分析源码.
那么现在就跟着这样的学习套路来开始自己的分析道路:
1 , mybatis的架构图:
(1) 接口层(API):提供给外部使用的api, 通过这些api来操作数据库.
(2) 数据处理层:如图所示,主要功能就是参数的映射,sql解析,sql执行,对结果的映射.
(3) 基础支撑层:主要是一些数据库的连接管理,事务管理,配置加载,缓存处理.
工作流程整理:
(1) 在启动的时候会加载配置,并初始化sql的配置信息, 配置会分别加载 配置文件和注解上的配置信息,将它们封装成MappedStatement对象(里面主要包含了传入参数映射配置,执行的sql语句,结果映射配置) 存储在内容当中.
(2) 接收调用请求,并传入某条sql的id和参数对象,交给下层的请求处理层进行处理
(3) 处理操作请求:
(a)根据SQL的ID查找对应的MappedStatement对象。
(b)根据传入参数对象解析MappedStatement对象,得到最终要执行的SQL和执行传入参数。
(c)获取数据库连接,根据得到的最终SQL语句和执行传入参数到数据库执行,并得到执行结果。
(d)根据MappedStatement对象中的结果映射配置对得到的执行结果进行转换处理,并得到最终的处理结果。
(e)最后释放连接资源.
接下来跟源码分析这个过程,看看具体都是怎么做的.
网友评论