服务器免备案,免费培训seo网站,高端网站建设专业公司,网站页面布局图片#x1f384;欢迎来到边境矢梦的csdn博文#x1f384; #x1f384;本文主要梳理MyBatis底层源码分析 #x1f384; #x1f308;我是边境矢梦#xff0c;一个正在为秋招和算法竞赛做准备的学生#x1f308; #x1f386;喜欢的朋友可以关注一下#x1faf0;#x1f… 欢迎来到边境矢梦°的csdn博文 本文主要梳理MyBatis底层源码分析 我是边境矢梦°一个正在为秋招和算法竞赛做准备的学生 喜欢的朋友可以关注一下下次更新不迷路 Ps: 月亮越亮说明知识点越重要 (重要性或者难度越大) 目录
主要Debug的点
完成读取配置文件并解析 一图全知:
动态代理
一图全知: 主要Debug的点 完成读取配置文件并解析
SqlSessionFactoryBuilder 是 MyBatis 框架中的一个关键类它用于创建 SqlSessionFactory 实例。SqlSessionFactory 是 MyBatis 的核心类之一负责管理数据库连接、执行 SQL 语句和处理事务等操作。 XMLConfigBuilder 是 MyBatis 中用于解析 MyBatis 配置文件通常是 mybatis-config.xml的类。这个配置文件包含了有关数据库连接、映射器Mappers、缓存、数据源等方面的配置信息。XMLConfigBuilder 的主要任务是将这些配置信息解析成 Java 对象用于配置 MyBatis 框架的各个组成部分。
XMLMapperBuilder 是 MyBatis 中的一个关键类它用于解析映射器MapperXML文件其中包含了 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 执行都会从数据库中获取最新的结果。 一图全知:
(理清这个图还是不容易, 但是理清就全清楚了)