源码分析-Mybatis源码阅读准备

源码解析-Mybatis
01 源码分析-Mybatis源码阅读准备
02 源码分析-Mybatis源码阅读-会话层
03 源码分析-Mybatis源码阅读-执行器
04 源码分析-Mybatis源码阅读-Statement语句处理器
05 源码分析-Mybatis源码阅读-参数处理器
06 源码分析-Mybatis源码阅读-结果集处理器
07 源码分析-Mybatis源码阅读-主键生成器
08 源码分析-Mybatis源码阅读-懒加载机制
09 源码分析-Mybatis源码阅读-游标
10 源码分析-Mybatis源码阅读-类型处理器
11 源码分析-Mybatis源码阅读-缓存
12 源码分析-Mybatis源码阅读-Mapper代理

一 准备阅读分支

Github上Fork源码到自己的github(没有github账号先注册一个)。

然后选择一个发布tag,比如选择mybatis-3.5.7的源码,再创建一个分支用于阅读源码和写中文注释。如我的源码阅读分支https://github.com/qicoding/mybatis-3/tree/readsource

二 源码包路径统计与分析

通过命令 find . -name "*.java"|xargs cat|grep -v -e ^$ | sed 's/^ *//' | cut -c1 | grep -v / | grep -v "*" | wc -l查询每个包下的代码行数(去掉注释与空行之后的)

源码对应包的说明如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
.
└── org
└── apache
└── ibatis
├── annotations 注解模块 行数:520
├── binding Binding模块 行数:554
├── builder 配置解析 行数:2757
├── cache 缓存模块 行数:921
├── cursor 游标模块 行数:158
├── datasource 数据源模块 行数:990
├── exceptions 异常模块 行数:60
├── executor SQL执行 行数:3836
├── io 资源加载模块 行数:796
├── jdbc jdbc模块 行数:1004
├── lang lang模块 行数:23
├── logging 日志模块 行数:913
├── mapping 映射 行数:1272
├── parsing 解析器模块 行数:624
├── plugin 插件模块 行数:171
├── reflection 反射模块 行数:1956
├── scripting SQL解析 行数:1130
├── session 会话模块 行数:1643
├── transaction 事务管理模块 行数:245
├── type 类型转换模块 行数:2276
└── util 工具类 行数:20
总行数: 21870

通过统计,排除注释和空行之后总的代码行数有21870行,如果我们不了解Mybatis的原理和SQL的执行流程,我们可能很难把这两万多行代码读懂读透。

那么,Mybatis的SQL执行原理是怎么样的呢,请看下图:

mybatis-start01

所以,我们阅读源码的次序,也是自顶向下,逐步深入阅读。