前言

在看过很多大佬的视频,博客,源码解析文章,觉得自己也要理下MyBatis,总结总结,关于MyBatis源码在我总结的时候,我还不是特别的熟,所以用写文章的方式来让自己更熟悉一些具体细节和思想,借鉴了很多大佬的经验,算是把大家的精华都抄下来了,建议去GitHub自己Fork一份MyBatis的源码,跑下单元测试,也可以自己备注笔记学习,特别方便。

什么是MyBatis

MyBatis是一个半自动的ORM 框架,我们可以在xml或者基于注解方式自己编写sql让MyBatis去帮我们与数据库打交道,而不需要程序员去执行复杂的JDBC操作。

MyBatis架构

去欢乐谷玩一样,我们一般会先拿张地图,了解下园区的大致介绍,哪些景点,出入口和注意事项。看源码也一样先了解整体架构和思想,把控好主线,不会走丢,从核心模块开始入手,再延伸到一些辅助的模块,一定要遵循这个原则,否则容易翻车⚠️⚠️⚠️
02-Mybatis架构.png
图片来源:公众号【Java基基】

接口层

也就是SqlSession这个接口,非常重要,通过这个接口我们可以执行一些CRUD、事务操作、获取Mapper、缓存等操作,例如:select、insert、rollback都在这个接口定义

核心处理层

一些配置、参数、Sql的解析和结果集的处理

基础支持层

是MyBatis的基础支撑,资源、日志,是MyBatis的地基

MyBatis包名及作用

每个包代表了一个功能模块,MyBatis为每个包都加了一个package-info.java的类用来说明这个包的作用。第一个知识点,学习良好的命名规范,见名知意,职责划分,添加包注释
03-Mybatis源码包名模块.png

image.png

小结

本篇我们了解了MyBatis的整体架构和各模块功能职责,如果你继续点开某个包会发现有非常多相似的类,其实这是MyBatis对类的功能单一职责。最后,希望能Fork代码点开看看,毕竟:talk is cheapshow me the code
_

请你相信我所说的都是错的