手写Mybatis的第一章到第十章的代码都放在了GitHub上,GIT地址:
my-mybatis/my-mybatis at master · dufGIT/my-mybatis (github.com)
从第一章到第十章目前已经涉及很多类了,但是它整体的模块还是很清晰的,我将这十章大致的内容用类流程方式串下来,方便回顾阅览。
我按最最要最明显的两部分分,一个是会话工厂构建SqlSessionFactoryBuilder,从这个类开始进行解析XML一系列动作,解析环境,解析Sql啊,并在相对应的时机将解析的数据存储在各个实体类里进行映射。
第二个是用户通过会话获取到Mapper时sqlSession.getMapper(IUserDao.class),获取到对应代理对象,这时通过代理工厂流转到代理方法,通过标签执行会话里的增删改查方法。
图中的各组颜色,在右上角有区分,区分颜色也好区分模块之间关系及流转情况,同色系的代表为一个模块里的业务或者类关系。
接下来就开始处理完善实现一些功能,如注解版配置Sql,动态Sql解析,一级、二级缓存等等....
个人感受
手写MyBatis总体学习,自己手敲下来感觉收获很多,是值得反复学习,推敲的一个源码,里边的每一句代码都有自己的意义,或者说是作者的良苦用心,通过手写能够增大我们对源码设计理解能力,增强自己的编程功底,能够感受自己与优秀的编程者的差异,真的受益匪浅。
但是,却又是一个非常长期且漫长的过程,需要学习理解、一点一点手敲代码、debug调试、问题更改、理解设计思路、画UML图、再继续用自己所理解的语言写博客,希望大家能够看懂、学明白,所以每一章节可能更新很慢,又要上班、又要有自己的生活、所以一般也是碎片化的时间去学习丰富自己。