😀前言
在本文中,我们将探讨如何自己实现 MyBatis 底层机制,这将帮助我们更深入地理解 MyBatis 框架的内部工作原理。我们将从项目环境的搭建开始,逐步构建一个简化版的 MyBatis,包括封装
SqlSession
到执行器、创建 Mapper 接口和 Mapper.xml、MapperBean 的设计,以及使用动态代理代理 Mapper 的方法。同时,我们还将回顾 MyBatis 的整体架构,明确了解其关键组件和原理。首先,我们创建了一个 Maven 项目,并配置了必要的依赖。随后,我们准备了数据库表,以便在底层机制的实现中进行数据操作。接着,我们编写了 MyBatis 的核心配置文件
mybatis-config.xml
,其中进行了全局配置,包括数据源、事务管理器、类型别名等。接下来,我们着手实现了
SqlSessionFactory
的创建,该工厂类是 MyBatis 的核心,用于创建SqlSession
。通过SqlSession
,我们可以进行数据库操作,这需要理解SqlSession
底层是如何与数据库连接进行交互的,包括Executor
和MappedStatement
的设计和实现。Executor
负责执行 SQL 语句,而MappedStatement
是通过解析Mapper.xml
文件生成的,包含了 SQL 语句定义以及参数和结果的映射信息。最后,我们介绍了 Mapper 接口和 Mapper.xml 的创建,以及如何使用动态代理来代理 Mapper 的方法,从而使其与 SQL 语句关联起来。这一系列步骤将帮助我们实现一个简单的 MyBatis 底层机制,从而更好地理解 MyBatis 框架的工作原理。
🏠个人主页:[尘觉主页](https://blog.csdn.net/apple_67445472?type=blog)
🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力😉😉
在csdn获奖荣誉: 🏆csdn城市之星2名
💓Java全栈群星计划top前5
🤗 端午大礼包获得者 🥰阿里云专家博主
😉亚马逊DyamoDB结营
💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰
如果文章有什么需要改进的地方还请大佬不吝赐教 先在次感谢啦😊
技术特点
封装Sqlsession到执行器+ Mapper 接口和Mapper.xml + MapperBean + 动态代理 代理Mapper 的方法
文章目录
🥰深入剖析:自己实现 MyBatis 底层机制的步骤与原理解析
🥰深入剖析:自己实现 MyBatis 底层机制的步骤与原理解析
MyBatis 整体架构分析
对上图的解读
1) mybatis 的核心配置文件mybatis-config.xml: 进行全局配置,全局只能有一个这样的配置文件XxxMapper.xml 配置多个 SQL,可以有多个 XxxMappe.xml 配置文件
2) 通过 mybatis-config.xml 配置文件得到 SqlSessionFactory
3) 通过 SqlSessionFactory 得到 SqlSession,用 SqlSession 就可以操作数据了
4) SqlSession 底层是 Executor(执行器), 有 2 个重要的实现类, 有很多很多方法
5) MappedStatement 是通过 XxxMapper.xml 中定义, 生成的 statement 对象
6) 参数输入执行并输出结果集, 无需手动判断参数类型和参数下标位置, 且自动将结果集 映射为 Java 对象
😊搭建 MyBatis 底层机制开发环境
创建maven项目
流程就不多说了上一篇和手写Spring 和Spring MVC已经介绍过了
配置xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.wyxdu</groupId>
<artifactId>wyx-mybatis</artifactId>
<version>1.0-SNAPSHOT</version>
<!--定义编译器 / source / target 版本即可-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<java.version>1.8</java.version>
</properties>
<!--引入必要的依赖-->
<dependencies>
<!--引入dom4j-->
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
<!--引入mysql依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
<!--lombok-简化entity/javabean/pojo开发 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
</dependency>
</project>
创建数据库和表
CREATE DATABASE `wyx_mybatis`;
USE `wyx_mybatis`;
CREATE TABLE `monster` (
`id` INT NOT NULL AUTO_INCREMENT,
`age` INT NOT NULL,
`birthday` DATE DEFAULT NULL,
`email` VARCHAR(255) NOT NULL,
`gender` TINYINT NOT NULL,
`name` VARCHAR(255) NOT NULL,
`salary` DOUBLE NOT NULL,
PRIMARY KEY (`id`)
) CHARSET=utf8
INSERT INTO `monst` VALUES(NULL, 100, '2022-9-8', 'wyx@qq.com', 2,'WYX', 1234.55)
设计思路
😄总结
通过本文的探讨,我们深入研究了如何自己实现 MyBatis 底层机制。我们开始于项目环境的搭建,随后逐一实现了 MyBatis 核心组件,包括 SqlSessionFactory
的创建、SqlSession
的封装、Executor
和 MappedStatement
的设计,以及 Mapper 接口和 Mapper.xml 的创建与动态代理的使用。
这一过程不仅让我们更深入地理解了 MyBatis 框架的内部工作原理,还培养了我们在底层数据库操作和框架设计方面的技能。自己实现 MyBatis 底层机制是一个复杂的任务,但它有助于我们更好地掌握这个流行的数据访问框架,同时也为我们提供了深入学习数据库和持久层技术的机会。希望本文能够对你的学习和项目开发有所帮助。
😍深入解析:自己实现 MyBatis 底层机制系列
第一篇-->深入剖析:自己实现 MyBatis 底层机制的步骤与原理解析
第二篇-->深入解析:自己实现 MyBatis 底层机制的任务阶段1 - 读取配置文件与建立数据库连接
第三篇-->深入实现 MyBatis 底层机制的任务阶段2 - 编写执行器与数据库操作
第四篇-> 深入实现 MyBatis 底层机制的任务阶段3 - 封装 SqlSession 到执行器
第五篇-->深入实现 MyBatis 底层机制的任务阶段4 - 开发 Mapper 接口和 Mapper.xml
第六篇-->深入实现 MyBatis 底层机制的任务阶段 5- 开发和 Mapper 接口相映射的 MapperBean
第七篇-->深入实现 MyBatis 底层机制的任务阶段 6-实现任务阶段 6- 在 WyxConfiguration, 读取 XxxMapper.xml,能够创建 MappperBean 对象
第八篇->深入实现 MyBatis 底层机制的实现任务阶段 7- 实现动态代理 Mapper 的方法
😁热门专栏推荐
等等等还有许多优秀的合集在主页等着大家的光顾感谢大家的支持
🤔欢迎大家加入我的社区 尘觉社区
文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起来评论区一起讨论😁 希望能和诸佬们一起努力,今后我们一起观看感谢您的阅读🍻 如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞