浅入浅出mybatis(三)

96 阅读2分钟

这是我参与11月更文挑战的第20天,活动详情查看:2021最后一次更文挑战

上一篇文章简单描述了mybatis的大致运行过程,建立了一个大致的印象。今天我们从整体上看一下mybatis的项目结构及其分工,然后再各个击破去理解和掌握。

我们今天关注的是mybatis的核心包,而像spring-boot-starter之类的第三方包相对比较简单,以后有空再分析。下面的图是整体的包结构:

image.png

由表及里可以分为三层结构:

  • 配置解析层:主要用来读取xml配置文件,SQL映射文件等
  • 核心业务功能层:提供了与数据库交互的必要功能,包括缓存,连接池等
  • 基础工具层:包括受检异常、工具类、注解、反射等

根据以上的划分,下面是具体包的功能划分表:

配置解析核心功能基础工具
bindingjdbcexceptions
buildercacherefection
mappingtransactionannotations
scriptingcursorlang
datasourceexecutortype
sessionio
pluginlogging
parsing

阅读这样体量的源码讲求循序渐进的思路,应该从最边缘依赖最少的地方入手,没有太多的调用依赖,对思路的干扰比较小。相反,核心的业务功能往往大量依赖了外围的代码,但这个时候我们已经对外围的代码相对熟悉了,阅读核心的业务逻辑自然也不会感觉陌生。

对应到mybatis上,基础工具层的代码偏工具属性,相对业务无关,被大量的上层代码调用,自身没有其他的依赖,这就是我们要入手的地方。当熟悉之后,我们才开始配置解析部分的阅读,这部分也偏工具,为了初始化和读取xml文件。最后我们再慢慢研究核心功能层,有了前面的基础,比直接阅读肯定会高效很多。