《手写MyBatis:渐进式源码实践》基于MyBatis的核心逻辑,通过实现简单版MyBatis的方式,对MyBatis进行分析、设计和实践。本书以实践为核心,摒弃MyBatis源码中繁杂的内容,聚焦于MyBaits中的核心逻辑,简化代码实现过程,以渐进式的开发方式,逐步实现MyBaits中的核心功能。从解析、绑定、反射、缓存,到会话和事务操作,再到如何与Spring、Spring Boot进行关联注册Bean对象,达到整合部分功能的目的。读者可以把此次学习当作开发一个项目,由此可以看到MyBatis从无到有,再到完善和整合的全过程。
《手写MyBatis:渐进式源码实践》既可以作为计算机相关行业研发人员的辅导书,也可以作为高等院校计算机专业学生的参考书。无论是初学者,还是中级和高级研发人员,都能从本书中获得启发。
跟小傅哥学MyBatis,从零手写源码级复杂项目,提升架构思维与设计逻辑,锻炼编码能力!
付政委(小傅哥)
作为一名一线互联网Java工程师、架构师,曾开发过交易、营销类项目,运营、活动类项目,设计过中间件,组织过系统重构,编写过技术专利。他不仅从事业务系统的开发工作,也经常做一些字节码插桩类的设计和实现,对架构的设计和落地具有丰富的经验。他既热衷于Java语言,也喜欢研究中继器、I/O板卡、C#和PHP,是一名活跃的技术“折腾者”。常逛GitHub,乐于分享技术文章。
沉淀、分享、成长,让自己和他人都能有所收获!
前言
MyBatis是遵循Apache License 2.0许可的自由软件。2004年,Clinton Begin将iBATIS的名称和代码都捐赠给了Apache软件基金会。2010年,由Apache软件基金会迁移到Google Code,并更名为MyBatis。2013年,再次迁移到GitHub进行迭代和维护。
MyBatis是一款非常优秀的ORM框架。它通过配置XML文件或Java注解的方式,将Java代码中DAO对象类与SQL语句进行映射关联,完成对数据库的增、删、改、查操作。正是因为MyBatis具有简单、易用和灵活等特性,所以成为众多互联网公司开发Java项目的首选ORM框架。
希望长期从事编程开发工作的架构师和研发人员不仅要熟练使用MyBatis,还要掌握其源码设计。学习设计思想和设计模式在实际场景中的应用方法,可以提高架构师和研发人员对业务工程架构的设计能力,以及基于MyBatis扩展各类技术插件的能力,从而实现监控、加密、路由等功能。
为什么撰写本书
在遇到MyBatis的报错提醒,以及需要基于MyBatis开发各类技术插件时,大部分研发人员会尝试阅读MyBatis源码。由于MyBatis源码体量庞大、语法复杂,也不像平常的业务流程代码一样具有分层结构,并且使用了大量的设计模式,因此理解难度比较大。研发人员很难厘清其中的各个代码类的调用顺序和各个类之间的关系。
笔者阅读了不少关于MyBatis的图书,在反复学习源码后,仍然难以理解MyBatis中各项功能的实现细节。其中一个原因是没有动手实践,只阅读图书很难完全掌握MyBatis的精髓。因此,笔者结合对框架功能细节的拆解,按照项目的实现过程,分析每个功能逻辑的设计原则、设计方案和落地代码,渐进式地完成了整个框架的开发。就像做一个项目一样,完整实现了MyBatis的功能,这样不仅可以深入地了解和认识MyBatis,还可以体会更多精妙的设计原则和设计模式。笔者把关于手动实现简单版MyBatis 的内容编写成书,希望可以帮助更多的研发人员学习MyBatis 源码,编写出有价值的设计方案。
本书主要内容
本书采用从零手写MyBatis 的方式, 摒弃MyBatis 源码中繁杂的内容, 只选择MyBatis 中的核心逻辑,简化代码实现过程,保留核心功能,如解析XML文件、绑定映射器、代理DAO 接口、数据源池化反射工具包、插件、缓存数据、会话实现,以及和Spring、Spring Boot 整合等。在开发过程中,细化功能模块,逐步完成一个简单版MyBatis 框架。
本书共22 章。引言介绍了学习MyBatis 的方法,以及本书源码的获取和使用方式。
第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 核心源码的开发。首先,每章开头会列出难度和重点;然后,正文介绍要处理的问题、具体设计和实现代码;最后,给出测试验证和总结。
在阅读本书的过程中,建议读者先阅读“引言”,以便以全局的视角了解本书要实现的MyBatis 框架的相关功能,并掌握学习方法。另外,“引言”中也列举了本书工程源码的环境配置、获取和使用方法。
致谢
特别感谢我的父母(付井海、徐文杰)、妻子(郭维清),由于他们在日常生活中分担了许多家庭任务,因此笔者才有更多的时间投入文字创作中,本书才能与广大读者见面。
感谢灵魂设计师Beebee 老师为本书设计封面插图。
感谢电子工业出版社博文视点及宋亚东编辑为本书出版所做的一切。
由于笔者水平有限,书中难免存在一些不足之处,希望广大读者给予批评、指正。
付政委(小傅哥)