ToB企服应用市场:ToB评测及商务社交产业平台

标题: 7 张图解锁 MyBatis 整体脉络,让你轻松拿捏面试官! [打印本页]

作者: 忿忿的泥巴坨    时间: 2023-12-10 03:48
标题: 7 张图解锁 MyBatis 整体脉络,让你轻松拿捏面试官!
原文:juejin.cn/post/7283798251403821056
本文笔者计划从全局角度来对Mybatis的整体架构及进行一次回顾和总结,希望能帮助你更加透彻的理解Mybatis。
1、前言
MyBatis是一款ORM(Object-Relational Mapping)框架,其主要用于将Java对象与关系数据库之间进行映射,凭借其轻量性、稳定性以及广泛的开源社区其受到了广大开发者的追捧。
那MyBatis为我们做了哪些事情呢?其实,总结来看主要有如下几点:
知晓了MyBatis的功能特性后,接下来让我们一起来看看MyBatis内部是通过哪些组件来支撑起这些功能的。
推荐一个开源免费的 Spring Boot 实战项目:
https://github.com/javastacks/spring-boot-best-practice
2、总览MyBatis
对于Mybatis的架构大致可以分为三层:基础支持层核心处理层接口层。

或许,你会觉得上图过于复杂,难以理解。如果此刻你也有这样的疑惑,不要慌。不妨跟着笔者思路来进行梳理。
首先,使用MyBatis概括来看大致包括如下几步:
由于在使用MyBatis过程中会编写相关的配置文件,所以Mybatis内部必然需要相应组件来支撑配置文件的解析,这些也就构成了底层的基础支撑层。既然会解析配置文件,那是不是必然会涉及到资源加载、配置解析等模块?
进一步,当配置文件解析完成后,下一步就是生成代理,然后执行sql,此时所涉及的也就是核心处理层中的sql执行,sql解析等。更进一步,执行sql过程中为了避免Connection频繁创建,是不是需要对连接进行池化操作?所以MyBatis内部会抽象出一个数据源模块来统一管理连接。
除此之外,对于sql执行过程中的事务是不是也需要控制?所以MyBatis还有事务管理模块来对sql执行过程中的事务进行管理。
事实上,你只需要记住Mybatis的使用过程为:定义接口,提供配置文件,而后生成代理,执行****Sql 即可。以此进行发散,自然而然能扩展出上图所示内容,根本没必要死记硬背。
熟悉了MyBatis的整体架构后,我们接下来看Mybatis内部执行sql的大致流程:

接下来,我们将主要围绕这张图中内容进行总结分析。
3、配置文件解析
配置文件解析过程大致如下所示:

事实上,MyBatis内部对于配置文件解析的过程可以概括如下:
而参与配置文件解析的都继承与BaseBuilder,其体系结构如下所示:
其中
总结来看,对于MyBatis的加载过程来说,其在处理配置文件信息时,首先,会传递配置文件所在位置信息,然后再调用框架提供的****SqlSessionFactory的build方法便会根据传入路径信息去加载相关的配置文件,并进行解析。而解析的内容会存放到的configuration之中,进而方便后续组件的使用。
4、代理构建
当配置文件解析,下一步就是通过SqlSession的getMapper方法来构建一个接口对应的代理类,这一过程大致如下:

这一过程中涉及的组件主要包括MapperProxyFactory、MapperRegistry、MapperProxy,更加详细的分析可参考Mybatis流程分析(六): Mybatis中方法和sql语句的桥梁——MapperProxy, 总之这一过程的本质就是通过****Jdk动态代理的方式返回一个实现接口的实例对象
5、sql执行
当配置文件解析完成,接口相应的代理类构建完毕后,下一步要做的就是sql的执行,这一过程逻辑大致如下所示:

这一部分的底层逻辑就是原生JDBC操纵数据库的那一套逻辑,即


6、总结

最后,我们再来一下Mybatis内部对于sql执行的大致步骤:
进一步,上述步骤可总结概括总结为如下的流程。

近期热文推荐:
1.1,000+ 道 Java面试题及答案整理(2022最新版)
2.劲爆!Java 协程要来了。。。
3.Spring Boot 2.x 教程,太全了!
4.别再写满屏的爆爆爆炸类了,试试装饰器模式,这才是优雅的方式!!
5.《Java开发手册(嵩山版)》最新发布,速速下载!
觉得不错,别忘了随手点赞+转发哦!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4