mybatis实战

北城余情 提交于 2020-09-28 18:07:33

前面我们分享了mybatis的核心组件和整体运行流程等设计的源码,今天我们按照之前分析的思路来尝试手写一下mybatis的核心运行流程实现。通过我们手写mybatis,更好的体会它的整体架构设计思想、核心运行流程和本质,从而提升我们的架构能力。

整体运行流程

image.png

mybatis源码的核心运行流程三大阶段之前已经介绍得很多了,它的本质不会脱离一个ORM框架应该干的事儿。那么按照这个主体思路和mybatis源码实现层面的一些好的设计,我手写了一个精简版的mybatis核心业务流程设计实现。精简版mybatis要实现的目标是:从设计角度实现完成一个和mybatis运行流程类似的轻量级mybatis,从开发角度调用下面的代码运行并输出正确的结果:

image.png

image.png

上面的测试调用的可不是mybatis的API完成的,而是今天mybatis精简版完成的目标。它的整体骨架结构如下:

image.png

datasource(数据源组件):负责封装非池化的数据源信息、提供设计层面数据连接的构建和管理等;

configuration(配置组件):外部资源的解析、封装、缓存和全局的配置对象的构建;

binding(绑定组件):负责实现Mapper动态代理的相关功能的增强、数据库核心操作执行的映射和内部统一访问路由封装;

executor(执行器组件):负责封装mybatis执行的核心底层接口:执行器、Statement处理器、ResultSet处理器等;

reflection(反射工具):封装参数映射、结果集映射和转换的基础反射能力;

session(会话组件):负责封装数据库会话生命周期内的各种行为能力;

下面就来分块一一过一下整体的源码和实际运行效果

源码设计实现

数据源组件源码

image.png

image.png

image.png

image.png

image.png

image.png

配置组件源码

image.png

image.png

image.png

image.png

image.png

image.png

image.png

绑定组件源码

image.png

image.png

会话组件源码

image.png

image.png

image.png

image.png

image.png

执行器组件源码

image.png

image.png

image.png

image.png

image.png

image.png

反射工具源码

image.png

源码结构

image.png

运行结果

image.png

总结

以上就是整个精简版mybatis的设计源码,其实只要看过源码或之前的文章,对以上的实现思路应该是尽在不言中才对。最好的源码学习方式是动手。很多朋友看源码都有大脑告诉自己明白,但是手还是不会。所以动手是检验你的学习效果最好方式。推荐看了源码后,动手把源码的设计和你的理解结合,然后设定一个目标来实现一下,或许你能真正得到的更多!OK这次源码实战暂告一段落,更多其它java相关技术的干货,请继续关注!


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!