运维 · 2023年11月7日 0

手写一个MyBatis框架,太牛了

查看文章尾部

参与活动

作为你一名有追求的程序猿,你是否苦于该如何提升自己的编码质量呢?

博文菌最近听说一种好用的方法,分享给大家~~

那就是学习优秀框架的设计思想和设计模式在实际场景中的应用方法

据说,这样可以非常有效地提高架构师和研发人员对业务工程架构的设计能力。

既然如此,选择哪个框架进行学习比较好呢?

其实,大家天天接触的神级开源框架——MyBatis,就是绝好的学习素材!


01

为何选择MyBatis

MyBatis作为一款优秀的ORM框架,通过配置XML文件或Java注解的方式,将Java代码中DAO对象类与SQL语句进行映射关联,完成对数据库的增、删、改、查操作。

由于MyBatis具有简单、易用和灵活等特性,所以成为众多互联网公司开发Java项目的首选ORM框架。

在遇到MyBatis的报错提醒,以及需要基于MyBatis开发各类技术插件时,大部分研发人员会尝试阅读MyBatis源码。

由于MyBatis源码体量庞大、语法复杂,也不像平常的业务流程代码一样具有分层结构,并且使用了大量的设计模式,因此理解难度比较大。研发人员很难厘清其中的各个代码类的调用顺序和各个类之间的关系。

架构师和研发人员在熟练使用MyBatis的过程中,重要的一点是掌握其源码设计,这样可以将其精妙的设计模式和设计原则运用到日程编码中。


02

怎样学好MyBatis

要想学习优秀的开源框架,有一条极佳的学习路线。

那就是:

手写源码

通过手写源码,对开源框架功能的细节进行拆解,并按照项目的实现过程分析每个功能逻辑的设计原则、设计方案和落地代码,以渐进式地完成整个框架的开发。

如此,就像做一个项目一样,完整实现开源框架的功能。

术清流小付哥在手写MyBatis 源码的实践中就受益匪浅!

他通过对 MyBatis 框架的理解和多年中间件的开发经验,把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 和Spring Boot,并介绍整个核心流程,同时总结ORM 框架开发中涉及的10种设计模式。

本书通过渐进式的开发方式实现整个 MyBatis 核心源码的开发。

每章开头先列出难度和重点,再介绍要处理的问题、具体设计和实现代码,最后给出测试验证和总结。




本书特点


学习优秀框架源码,不应该脱离其本身来实现一个简单的ORM框架,更不应该只是用一些自己的想法来代替原有的设计。

如果脱离MyBatis源码的核心实现学习MyBatis,就会缺少对解决复杂设计问题的思考,也很难学习到设计模式在框架中的运用方法,更无法了解各个模块的分层逻辑。

因此,本书内容从使用几个类就能写出简单的ORM框架开始,渐进式地扩展为拆解MyBatis,逐步扩展到使用100多个类完整实现一个核心的MyBatis框架。



业内专家推荐





作者简介



付政委(小傅哥)

作为一名一线互联网Java工程师、架构师,曾开发过交易、营销类项目,运营、活动类项目,设计过中间件,组织过系统重构,编写过技术专利。

他不仅从事业务系统的开发工作,也经常做一些字节码插桩类的设计和实现,对架构的设计和落地具有丰富的经验。

他既热衷于Java语言,也喜欢研究中继器、I/O板卡、C#和PHP,是一名活跃的技术“折腾者”。常逛GitHub,乐于分享技术文章。

沉淀、分享、成长,让自己和他人都能有所收获!

限时五折优惠,快快抢购吧!


赠送活动

包邮送 10 本

《手写MyBatis:渐进式源码实践》

▲点击卡片回复「抽奖」参与
活动截止时间:2023年3月13日 10:00





点击阅读原文,查看本书详情!