MyBatis底层源码分析

🎄欢迎来到@边境矢梦°的csdn博文🎄

🎄本文主要梳理MyBatis底层源码分析 🎄

🌈我是边境矢梦°,一个正在为秋招和算法竞赛做准备的学生🌈

🎆喜欢的朋友可以关注一下**🫰🫰🫰**,下次更新不迷路🎆
Ps: 月亮越亮说明知识点越重要 (重要性或者难度越大)🌑🌒🌓🌔🌕

目录

🍀主要Debug的点

🌻完成读取配置文件并解析

🌸一图全知:

🍁动态代理

📢一图全知:


🍀主要Debug的点

🌻完成读取配置文件并解析

📌SqlSessionFactoryBuilder 是 MyBatis 框架中的一个关键类,它用于创建 SqlSessionFactory 实例 。SqlSessionFactory 是 MyBatis 的核心类之一,负责管理数据库连接、执行 SQL 语句和处理事务等操作。

📌XMLConfigBuilder 是 MyBatis 中用于解析 MyBatis 配置文件(通常是 mybatis-config.xml) 的类。这个配置文件包含了有关数据库连接、映射器(Mappers)、缓存、数据源等方面的配置信息。XMLConfigBuilder 的主要任务是将这些配置信息解析成 Java 对象,用于配置 MyBatis 框架的各个组成部分。

📌XMLMapperBuilder 是 MyBatis 中的一个关键类,它用于解析映射器(Mapper)XML文件 ,其中包含了 SQL 语句的定义以及与数据库表的映射配置。XMLMapperBuilder 负责将 XML 文件中的内容解析为 MyBatis 可以理解的配置信息,并将这些配置信息与具体的 Mapper 接口关联起来。

📌XPathParser 是 MyBatis 中的一个实用工具类,用于解析 XML 配置文件和处理 XPath 表达式。它的主要作用是帮助 MyBatis 解析各种 XML 文件,如 MyBatis 配置文件(mybatis-config.xml)、映射器文件(Mapper.xml)等,以获取配置信息、SQL 语句等内容。

📌MapperBuilderAssistant 是 MyBatis 中的一个关键类,它主要用于帮助解析和构建映射器(Mapper)接口中的 SQL 方法与映射文件(Mapper XML 文件)之间的关联关系 。这个类通常在解析 Mapper XML 文件时被使用,以便将 XML 中的配置信息与 Java 接口的方法绑定在一起。用于协助构建 Mapper 接口的映射配置。MapperBuilderAssistant 的主要作用是将 Mapper 接口方法与对应的 SQL 语句关联起来,并完成其他映射配置的一些工作。

📌XMLStatementBuilder 是 MyBatis 中用于解析映射器文件(Mapper XML 文件)中 <select>, <insert>, <update>, <delete> 等 SQL 语句节点的重要类 。它主要负责将这些节点中的信息解析为 MappedStatement 对象,以便 MyBatis 能够执行相应的 SQL 操作。

📌MappedStatement 是 MyBatis 中的一个重要类,它用于描述和存储映射器文件(Mapper XML 文件)中定义的 SQL 语句的相关信息 。每个 SQL 语句在 MyBatis 中都对应一个 MappedStatement 对象,该对象包含了 SQL 语句的各种配置信息,以便 MyBatis 执行相应的数据库操作。

🌸一图全知:

📢要图的私信我


一些截图

XMLStatementBuilder

Statement就是存放SQL语句的

将SQL语句封装到Configuration中

每一句SQL语句都是一次循环, 将其放在mappedStatement中以及放在Configuration配置对象中, 就这样SQL语句就解析完毕了


🍁动态代理

执行SQL语句的执行过程

monsterMapper是代理对象不是MonsterMapper的对象, 因为MonsterMapper是接口, 为了更好的执行只能用动态代理的方式进行执行

这里的键是Method

MapperProxy的方式执行

根据类型进行判断, 需要执行哪种类型的语句

根据类型判断选择执行INSERT

param = this.method.convertArgsTosqlCommandParam(args);是对参数的封装

以下是result = this.rowCountResult(sqlSession.insert(this.command.getName(), param));底层的执行

去this.delegate.update(ms, parameterObject)底层, 来到BaseExecutor

this.clearLocalCache 方法是 MyBatis 中用于清空当前 SQL 会话的本地缓存的一种方式。通过调用该方法,可以确保后续的 SQL 执行都会从数据库中获取最新的结果。

📢一图全知:

(理清这个图还是不容易, 但是理清就全清楚了)

相关推荐
freejackman18 分钟前
【实战二】字段级血缘追踪:拆解 AST 迷局,精准穿透函数链与子查询
大数据·数据库·sql
这个昵称不容易1 小时前
SpringBoot「衣依」服装销售平台:144个Java文件180个接口,从挑衣服到收货评价整条链路都在
java·springboot·毕设
计算机毕设定制辅导-无忧学长1 小时前
《基于微信小程序的居家医疗陪护预约系统设计与实现》
java·spring boot·微信小程序·uniapp·居家医疗陪护预约系统
.痞老板.1 小时前
mysql初阶--增删改查操作
数据库·mysql
文丑颜不良啊3 小时前
LeetCode2221~2240题目解析
java·leetcode
秋饼3 小时前
Computer Use Agent Java 落地实战:感知-行动循环、执行器与安全围栏生产级实现
java·ai·技术分享·后端开发
文丑颜不良啊5 小时前
LeetCode2161~2180题目解析
java·leetcode
文丑颜不良啊6 小时前
LeetCode2141~2160题目解析
java·leetcode
LabVIEW开发7 小时前
LabVIEW 连接板:28 个端子怎么排,优先级怎么定
java·算法·labview
lambo mercy7 小时前
AI智能租房助手
数据库