文章目录
- Mybatis手写专栏介绍
- 前言
- Mybatis是什么?
- 为什么要学习Mybatis源码?
- 目标
- 计划
- 源码
- 总结
Mybatis手写专栏介绍
前言
Mybatis是什么?
MyBatis 是一个半自动 ORM(对象关系映射)持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的工作,可以通过 XML 或注解的方式进行配置。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects, 普通的 Java对象)映射成数据库中的记录。
以下是 MyBatis 的一些关键特性:
- SQL 映射: MyBatis 允许你在 XML 文件中编写 SQL 语句,或者使用注解直接在接口方法上声明 SQL 语句。
- 结果映射: 你可以定义如何将数据库结果集的列映射到 Java 对象的属性中。
- 动态 SQL: MyBatis 支持构建动态 SQL 语句,可以根据条件构建不同的 SQL 语句。
- 事务管理: 支持声明式事务管理。
- 缓存机制: 提供了一级缓存和二级缓存机制,以提高查询效率。
- 插件扩展: 允许开发者通过插件扩展 MyBatis 的功能。
- 配置简单: 通过 XML 或注解配置,易于理解和维护。
为什么要学习Mybatis源码?
- 深入理解框架:
- 通过阅读MyBatis源码,可以更好地理解MyBatis的内部工作原理,包括它的架构设计、执行流程、以及如何与数据库进行交互。
- 使用MyBatis时更加得心应手,能够灵活地应对各种复杂的业务需求。
- 提升编程能力:
- MyBatis源码中包含了许多优秀的设计模式和编程实践,如工厂模式、单例模式、代理模式等。
- 学习这些模式和实践可以提高的编程技巧,积累场景的设计思路。
- 增强问题解决能力:
- 当你遇到MyBatis使用中的问题时,如果对源码有所了解,你可以更快地定位问题所在,甚至能够自己修改源码来解决问题。
- 这种能力对于解决生产环境中的复杂问题尤为重要,能够显著提高你的工作效率。
- 提升职业竞争力:
- 掌握MyBatis源码的开发者在求职市场上通常更受欢迎,因为这显示了你不仅有扎实的技术基础,还有深入学习和自我提升的能力。
- 在面试中,能够讨论框架的内部实现细节往往能给面试官留下深刻印象,增加你获得工作机会的可能性。
目标
依托小傅哥的《手写Mybatis:渐进式源码实践》书籍,以 Mybatis源码学习为目的,跟随书中的指导,一点点实现简化版 Myabtis框架,了解 Mybatis 核心的功能的设计方案和核心原理,理解吸收设计思路,后续可以扩展到实现中间件。
在手写简化版Mybatis的过程中, 我们会学习 Mybatis 从解析、绑定、反射、缓存,到会话和事务操作,以及如何与 Spring 进行关联注册 Bean 对象,完成整合部分功能逻辑。通过这些内容的拆解实现,我们可以很清楚核心功能的设计和实现,以后再阅读 Mybatis 源码也能做到胸有成竹啦。
内容还是分章节交付,每一节对应一个功能实现点,跟着一步步实现,完成开发一个相对完整的small-mybatis框架。希望这个过程,你能跟着一起打卡学习,最后你对mybatis框架的理解一定可以更进一层。
计划
《手写Mybatis渐进式源码实践》共22章,
第 1 - 4 章拆解和实现 ORM 框架的基本功能,构建会话的基本调用流程,解析 XML 文件,以及串联 DefaultSqlSession 结合解析配置项获取展示信息。
第 5 ~ 8 章:创建和使用数据源,池化技术的实现,完成执行 SQL 语句的操作,同时引入反射工具包,实现对属性信息的获取和设置。
第 9 ~ 12 章:以实现 ORM 框架的基本功能为目的,完善静态 SQL 的标准化解析、参数设置和结果封装,使整个 ORM 框架可以处理基本的增、删、改、查操作。
第 13 ~ 19 章:以完善 ORM 框架的核心功能逻辑为目的,实现注解 SQL 解析、 ResultMap 参数、事务处理自增索引、动态 SQL 解析、插件、一级缓存和二级缓 存等功能。
第 20 ~ 22 章:利用 ORM 框架整合 Spring 和 SpringBoot,并介绍整个核心流程, 同时总结 ORM 框架开发中涉及的 10 种设计模式。
目录如下:
- 第1章 实现一个简单的ORM框架
- 第2章 创建简单的映射器代理工厂
- 第3章 映射器的注册和使用
- 第4章 XML的解析和注册
- 第5章 数据源的创建和使用
- 第6章 数据源池化技术的实现
- 第7章 SQL执行器的定义和实现
- 第8章 元对象反射工具包
- 第9章 细化XML 语句构建器
- 第10章 封装参数设置处理器
- 第11章 封装结果集处理器
- 第12章 完善框架的增、删、改、查操作
- 第13章 通过注解配置执行SQL语句
- 第14章 ResultMap 映射参数的配置
- 第15章 返回insert 操作自增索引值
- 第16章 解析动态SQL 语句
- 第17章 插件功能
- 第18章 一级缓存
- 第19章 二级缓存
- 第20章 整合Spring
- 第21章 整合Spring Boot
- 第22章 设计模式总结第1章
参考着书中的思路指导,保持1天撸完对应章节代码,然后补充对应章节的笔记,包括类图、实现步骤、重点代码解析、运行结果截图等。在这个过程中我也会阅读不少资料以及官网上的文档,最终把相对那些符合当前章节有价值的内容,一并展示给读者学习,同时也满足个人对技术内容的积累。
源码
整个 Myabtis手写实践
的源码地址、学习笔记的开展思路,提前给到大家,方便大家对后续章节内容的结构,有清晰的认知,后续可以顺利跟着学习到这部分内容。
学习笔记输出结构:参考STAR法则(S:背景描述 T: 任务描述 A: 行动步骤 R: 测试验证结果)
文章结构: 前言+目标+设计+实现+测试
源码实现:https://github.com/swg209/small-mybatis–study.git
总结
- Myabtis是我们经常接触到的框架,经历了多个版本的迭代,直接上手看源码,会让人一脸懵。通过做一个简易版的Mybatis框架,对代码剥丝抽茧,体现核心功能,把最直接相干的设计思路呈现出来,我们再进行学习,才更容易理解。
- 在源码学习的过程中,笔者会和你一起从最简单、最简单的接口代理开始,逐步建立一些知识关联,从而使我们在这个学习过程中,收获更多。
- 关于
手写Mybatis实践
专栏的开篇介绍,整体计划愿景,已经给到你啦。接下来你可以阅读到文章、获取到源码,直至我们把所有的内容全部完成,到时候就可以开发出一个相对完整的 Mybatis框架了。希望在这个过程中你能和我一直坚持学习打卡!
参考书籍:《手写Mybatis渐进式源码实践》
书籍源代码:https://github.com/fuzhengwei/book-small-mybatis