前言
在本文中,我们将探讨如何自己实现 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 底层机制开发环境
配置xml文件
创建数据库和表
设计思路
总结
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 对象
创建maven项目
流程就不多说了上一篇和手写Spring 和Spring MVC已经介绍过了
4.0.0
com.wyxdu
wyx-mybatis
1.0-SNAPSHOT
UTF-8
1.8
1.8
1.8
dom4j
dom4j
1.6.1
mysql
mysql-connector-java
5.1.49
org.projectlombok
lombok
1.18.4
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 `monster` VALUES(NULL, 200, '2000-11-11', '[email protected]', 1,'牛魔王', 8888.88)
通过本文的探讨,我们深入研究了如何自己实现 MyBatis 底层机制。我们开始于项目环境的搭建,随后逐一实现了 MyBatis 核心组件,包括 SqlSessionFactory
的创建、SqlSession
的封装、Executor
和 MappedStatement
的设计,以及 Mapper 接口和 Mapper.xml 的创建与动态代理的使用。
这一过程不仅让我们更深入地理解了 MyBatis 框架的内部工作原理,还培养了我们在底层数据库操作和框架设计方面的技能。自己实现 MyBatis 底层机制是一个复杂的任务,但它有助于我们更好地掌握这个流行的数据访问框架,同时也为我们提供了深入学习数据库和持久层技术的机会。希望本文能够对你的学习和项目开发有所帮助。
热门专栏推荐
想学习vue的可以看看这个
java基础合集
数据库合集
redis合集
nginx合集
linux合集
等等等还有许多优秀的合集在主页等着大家的光顾感谢大家的支持
欢迎大家加入我的社区 尘觉社区
文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起来评论区一起讨论
希望能和诸佬们一起努力,今后我们一起观看感谢您的阅读
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力