Mybatis-运行原理

SqlSessionFactory初始化

image-20210513224221503

总结

把配置文件的信息解析并保存在Congratulation对象中,返回包含了Configuration的DefauConfiguration

MapperStatement:代表一个增删改查的详细信息

详细步骤

创建SqlSessionFactoryBuilder对象,调用build方法

image-20210513222734101

创建解析器parser,用解析器把每一个标签详细信息保存在Congratulation中

image-20210513222918599

image-20210513222929393

解析setting.xml

image-20210513220246462

解析mapper.xml

mapper.xml中的每一个元素信息解析出来并保存在全局配置中将增删改查标签的每一个标签属性都解析出来封装成一个MapperStatement,一个MapperStatement就代表一个增删改查的详细信息

image-20210513223023582

image-20210513221057031

image-20210513221555649

返回Configuration对象

image-20210513223214068

调用build方法创建DefaultConfiguration,DefaultConfiguration包含了保存全局配置信息的Configuration

image-20210513223348242

openSession获取SqlSession对象

返回一个DefaultConfiguration对象,包含了Configuration和Executor,Executor会在此被创建

image-20210513225133640

详细步骤

image-20210513225338324

image-20210513224449661

构建Executor执行器

image-20210513224536951

image-20210513225544080

将原生执行器封装成缓存执行器

image-20210513225612156

通过插件拦截器链实现所有插件

image-20210513225642973

返回包含了Configuration和Executor的DefaultConfiguration对象

image-20210513225909999

GetMapper获取到接口的代理对象

返回一个MapperProxy类型的代理对象

image-20210513231004847

详细步骤

调用getMapper方法

image-20210513231127238

image-20210513231133219

创建MapperProxy代理对象

image-20210513231147056

返回MapperProxy的代理对象

image-20210513231212016

image-20210513231236909

查询实现

image-20210514155119884

MapperProxy使用代理对象使用invoke方法调用MapperMethod传入会话和参数

image-20210514160806896

image-20210514160837289

image-20210514161154202

查询多个就调用executeMany()单个查询selectOne

image-20210514161253666

调用Executor的query方法

image-20210514161426297

wrapToMapIfCollection封装复杂类型到参数map集合

image-20210514161628650

query会获取到BoundSql和CacheKey

image-20210514161722032

BoundSql是包含了这个sql的所有详细信息(包含了sql语句 参数 类型等等 )

image-20210514161755849

CacheKey包含了缓存的信息,key值是:方法+id+参数xxx生成

image-20210514162012665

如下二个缓存的获取方法也证明了,如果mabits开启了缓存,会先调用CacheExecutor的query获取以名称空间为范围的二级缓存,如果没有就会调用BasicExecutor的query方法获取以session为范围的一级缓存,如果没有找到缓存 才会调用queryFromDatabase查询数据库

image-20210514162402844

image-20210514162555859

image-20210514162908298

image-20210514163108501

创建StatementHandler对象

image-20210514163145304

image-20210514163201305

image-20210514163339074

创建StatementHandler对象的同时分别创建出parameterHandler和resultSetHandler

image-20210514163950031

image-20210514164103044

调用prepareStatement方法创建原生JDBCStatement对象

image-20210514163534752

image-20210514164353503

返回list后续连接关闭

image-20210514165532170

image-20210514165706346

Mybatis运行原理总结

  1. 通过加载mybatis全局配置文件以及mapper映射文件初始化configuration对象 和Executor对象(通过全局配置文件中的defaultExecutorType初始化);
  2. 创建一个defaultSqlSession对象,将configuration对象和Executor对象注入给defaulSqlSession对象中;
  3. defaulSqlSession通过getMapper()获取mapper接口的代理对象mapperProxy(mapperProxy中包含defaultSQLSession对象)
  4. 执行增删改查
    1. 通过defaulSqlSession中的属性Executor创建statementHandler对象;
    2. 创建statementHandler对象的同时也创建parameterHandler和resultSetHandler;
    3. 通过parameterHandler设置预编译参数及参数值;
    4. 调用statementHandler执行增删改查;
    5. 通过resultsetHandler封装查询结果
  • 25
    点赞
  • 113
    收藏
    觉得还不错? 一键收藏
  • 26
    评论
### 回答1: MyBatis-Plus是一个基于MyBatis的增强工具,在MyBatis的基础上提供了更加便捷的CRUD操作、分页查询以及代码生成等功能。下面是MyBatis-Plus源码下载的步骤和方法: 1. 打开MyBatis-Plus的官方网站:https://baomidou.com/ 2. 在网站的首页上方菜单栏找到“Github”选项,点击进入MyBatis-Plus的Github页面。 3. 在Github页面上,可以看到MyBatis-Plus的所有开源代码。点击页面右上方的“Code”按钮,然后选择“Download ZIP”选项进行下载。 4. 下载完成后,将下载的ZIP文件解压到指定的文件夹中。 此外,如果你更希望直接通过Maven等构建工具来引入MyBatis-Plus,也可以在项目的pom.xml文件中添加MyBatis-Plus的依赖,然后通过构建工具自动下载源码。 总之,获取MyBatis-Plus源码最简便的方法是通过其官方网站或Github页面下载。这样就能够获得最新版本的MyBatis-Plus源码,方便进行二次开发或查看源码实现细节。 ### 回答2: 要下载MyBatis-Plus源码,可以按照以下步骤进行操作。 1. 打开MyBatis-Plus的GitHub仓库页面。在浏览器中输入"https://github.com/baomidou/mybatis-plus",进入仓库页面。 2. 在仓库页面上,可以看到一个绿色的按钮,上面标有"Code"。点击这个按钮,会出现一个下拉菜单。 3. 在下拉菜单中,选择"Download ZIP"。点击后会自动下载一个ZIP压缩文件到本地电脑。 4. 解压下载的ZIP压缩文件,可以得到MyBatis-Plus的源代码。 此外,也可以通过其他方式获取MyBatis-Plus的源码,比如使用Git命令克隆仓库。你可以在命令行中执行以下命令:git clone https://github.com/baomidou/mybatis-plus.git。这样可以将整个仓库克隆到你的本地电脑上。 下载MyBatis-Plus源码后,你就可以在本地进行修改和扩展。可以使用Java开发工具(如IntelliJ IDEA、Eclipse等)导入源码工程,然后进行编译和运行,进行源码的阅读和修改,以满足你的需求。 希望上述回答对你有所帮助。如有其他问题,请随时提问。 ### 回答3: Mybatis-Plus是一个优秀的Mybatis增强工具,可以在数据库操作中提供更多的便利和增强的功能。如果想要下载Mybatis-Plus的源码,可以按照以下步骤进行操作: 第一步,打开Mybatis-Plus的官方Github仓库,找到源码的下载链接。可以通过搜索引擎输入"mybatis-plus github"来找到官方仓库。 第二步,进入官方仓库后,可以点击 "Clone or download" 按钮,然后选择 "Download ZIP" 选项进行下载。这样就可以将整个Mybatis-Plus源码以zip压缩方式下载到本地。 第三步,下载完成后,可以将zip文件解压到本地的任意目录。 第四步,进入解压后的文件夹,可以看到Mybatis-Plus的源码文件和项目结构。 至此,你已经成功下载了Mybatis-Plus的源码。可以在本地对源码进行查看、学习和调试。 值得注意的是,Mybatis-Plus的源码是基于Java语言编写的,所以需要确保本地环境已经安装了Java开发工具。另外,Mybatis-Plus的源码是一个完整的项目,包含了各种功能模块和依赖库,所以无需额外的配置即可进行使用。 通过下载Mybatis-Plus的源码,可以深入了解其内部实现原理、自定义扩展功能,同时也能更好地理解和使用Mybatis-Plus提供的各种便利和增强功能,对于深入学习和使用Mybatis-Plus都非常有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值