深入剖析:自己实现 MyBatis 底层机制的步骤与原理解析

 前言

        在本文中,我们将探讨如何自己实现 MyBatis 底层机制,这将帮助我们更深入地理解 MyBatis 框架的内部工作原理。我们将从项目环境的搭建开始,逐步构建一个简化版的 MyBatis,包括封装 SqlSession 到执行器、创建 Mapper 接口和 Mapper.xml、MapperBean 的设计,以及使用动态代理代理 Mapper 的方法。同时,我们还将回顾 MyBatis 的整体架构,明确了解其关键组件和原理。

        首先,我们创建了一个 Maven 项目,并配置了必要的依赖。随后,我们准备了数据库表,以便在底层机制的实现中进行数据操作。接着,我们编写了 MyBatis 的核心配置文件 mybatis-config.xml,其中进行了全局配置,包括数据源、事务管理器、类型别名等。

接下来,我们着手实现了 SqlSessionFactory 的创建,该工厂类是 MyBatis 的核心,用于创建 SqlSession。通过 SqlSession,我们可以进行数据库操作,这需要理解 SqlSession 底层是如何与数据库连接进行交互的,包括 ExecutorMappedStatement 的设计和实现。 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文件

创建数据库和表

设计思路 

 总结


深入剖析:自己实现 MyBatis 底层机制的步骤与原理解析

MyBatis 整体架构分析

深入剖析:自己实现 MyBatis 底层机制的步骤与原理解析_第1张图片

对上图的解读

1) mybatis 的核心配置文件mybatis-config.xml: 进行全局配置,全局只能有一个这样的配置文件XxxMapper.xml 配置多个 SQL,可以有多个 XxxMappe.xml 配置文件

2) 通过 mybatis-config.xml 配置文件得到 SqlSessionFactory

3) 通过 SqlSessionFactory 得到 SqlSession,用 SqlSession 就可以操作数据了

4) SqlSession 底层是 Executor(执行器), 有 2 个重要的实现类, 有很多很多方法

深入剖析:自己实现 MyBatis 底层机制的步骤与原理解析_第2张图片 深入剖析:自己实现 MyBatis 底层机制的步骤与原理解析_第3张图片

5) MappedStatement 是通过 XxxMapper.xml 中定义, 生成的 statement 对象

6) 参数输入执行并输出结果集, 无需手动判断参数类型和参数下标位置, 且自动将结果集 映射为 Java 对象

搭建 MyBatis 底层机制开发环境

创建maven项目

流程就不多说了上一篇和手写Spring 和Spring MVC已经介绍过了

配置xml文件



    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 底层机制的步骤与原理解析_第4张图片

 总结

通过本文的探讨,我们深入研究了如何自己实现 MyBatis 底层机制。我们开始于项目环境的搭建,随后逐一实现了 MyBatis 核心组件,包括 SqlSessionFactory 的创建、SqlSession 的封装、ExecutorMappedStatement 的设计,以及 Mapper 接口和 Mapper.xml 的创建与动态代理的使用。

这一过程不仅让我们更深入地理解了 MyBatis 框架的内部工作原理,还培养了我们在底层数据库操作和框架设计方面的技能。自己实现 MyBatis 底层机制是一个复杂的任务,但它有助于我们更好地掌握这个流行的数据访问框架,同时也为我们提供了深入学习数据库和持久层技术的机会。希望本文能够对你的学习和项目开发有所帮助。

热门专栏推荐

想学习vue的可以看看这个 

java基础合集 

数据库合集 

redis合集 

nginx合集 

linux合集

等等等还有许多优秀的合集在主页等着大家的光顾感谢大家的支持

 欢迎大家加入我的社区 尘觉社区

文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起来评论区一起讨论
希望能和诸佬们一起努力,今后我们一起观看感谢您的阅读
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力

 

你可能感兴趣的:(#,手写机制,mybatis,java,spring,spring,mvc,mysql)