第1篇 MyBatis 3源码
第1章 搭建MyBatis源码环境 3
) ^& c/ P. g* \, V& u3 z1.1 MYBATIS 3简介 36 e4 c; Z4 ], S3 u9 n
1.2 环境准备 4. v$ N7 ?4 H* @7 y7 R
1.3 获取MYBATIS源码 41 B8 C" z# ~& C8 O, j
1.4 导入MYBATIS源码到IDE 6, d2 }/ _$ n! F4 y, m
1.5 HSQLDB数据库简介 95 `1 \7 k; g3 }& B
1.6 本章小结 11
5 C% n+ @+ J/ O: y' o第2章 JDBC规范详解 13" V% g5 {# u2 v4 E
2.1 JDBC API简介 13
* U& v4 Y; ?3 w6 ]2.1.1 建立数据源连接 14/ K% L" i0 r+ W) f' E, R
2.1.2 执行SQL语句 157 p1 n+ o6 A% j& c5 e: u
2.1.3 处理SQL执行结果 16
) s: w: ?* Q. R. p7 s5 B) U$ b8 w2.1.4 使用JDBC操作数据库 16& U" k3 K1 s! T& u- A% U' c! d
2.2 JDBC API中的类与接口 177 t9 v9 ~) F7 |) |: X2 n: v
2.2.1 java.sql包详解 17
- {6 P7 i) X U+ z/ Z8 G2.2.2 javax.sql包详解 20
6 d3 ~! v& n* v# Y% x3 t( ]2.3 CONNECTION详解 24
; [ R9 m* P/ M2.3.1 JDBC驱动类型 24
5 B$ O+ V8 y2 S+ F( ^2.3.2 java.sql.Driver接口 26
1 U% e0 Y. m8 H: ]8 i- S2.3.3 Java SPI机制简介 271 d6 \/ q- d: s8 {) A( s [
2.3.4 java.sql.DriverAction接口 29% h6 W/ @+ w; C( n
2.3.5 java.sql.DriverManager类 29: r! v, K& ^8 @1 D- @. h
2.3.6 javax.sql.DataSource接口 31, ]" D, e* H+ a- M
2.3.7 使用JNDI API增强应用的可移植性 32
" t% K8 ^/ P, S% L+ z2.3.8 关闭Connection对象 34
7 V; r$ |; n8 `- t# C2.4 STATEMENT详解 35
) l: Y0 K" S+ v' n/ u3 E2.4.1 java.sql.Statement接口 35' J( N: t# V; r2 J" q6 [1 R/ W" a7 J
2.4.2 java.sql.PreparedStatement接口 39
, @% C7 D) C% S2.4.3 java.sql.CallableStatement接口 43
# ~+ U0 ^2 O& Q) K, H, a$ B# o2.4.4 获取自增长的键值 444 f: q) i, x2 H
2.5 RESULTSET详解 45
x! ^+ R @5 t' z4 K2.5.1 ResultSet类型 45. h- F5 J+ d% ?9 m* H4 _
2.5.2 ResultSet并行性 46
/ Y# M+ s8 K# Q; `0 u' N% F8 l- V2.5.3 ResultSet可保持性 46
& s, Z h6 O. j2.5.4 ResultSet属性设置 47
1 V0 K% t5 b7 L2.5.5 ResultSet游标移动 47
& a/ t# W% ]) k2 U: D" ~/ o) O2 ^0 b2.5.6 修改ResultSet对象 48# ?' A5 Q3 \# c/ W, M7 O6 ?% K: M
2.5.7 关闭ResultSet对象 50
1 J& `( x3 T+ Q6 B& i& ], u2.6 DATABASEMETADATA详解 51
+ Q* e4 \, z2 `5 r2.6.1 创建DatabaseMetaData对象 51" ?6 W4 ^0 p$ [/ r7 l' F
2.6.2 获取数据源的基本信息 51$ ^) {$ w5 n8 Y+ Q6 }" }) {" g: n
2.6.3 获取数据源支持特性 53- }+ j* A# O0 n
2.6.4 获取数据源限制 53
- G4 w; I+ p' [' R! f9 N, ^2.6.5 获取SQL对象及属性 544 z2 B' Z. q1 e# U
2.6.6 获取事务支持 54
! x+ g1 @/ {% R- f7 D4 h; x7 o/ I4 W2.7 JDBC事务 54
) Z! @6 E' P+ [7 b% W: z2.7.1 事务边界与自动提交 55) H, J6 C! L O9 o9 w# k' S. J
2.7.2 事务隔离级别 55
! T; K; S# P' Z' M2.7.3 事务中的保存点 566 X& Y% _5 K5 l) f" w
2.8 本章小结 57$ q# o4 D: O0 @7 e/ a& A5 g$ [
第3章 MyBatis常用工具类 58/ |7 ~8 l! c7 _, d( s0 X" Y& u: `
3.1 使用SQL类生成语句 58
6 V, S) O% ]( e/ S/ _8 G3.2 使用SCRIPTRUNNER执行脚本 64
( Y8 W0 X1 g$ d4 ~$ U. P# U5 ^3.3 使用SQLRUNNER操作数据库 676 u+ t5 z, d, B! |
3.4 METAOBJECT详解 71
]- `& c" A" V7 y: H3.5 METACLASS详解 727 S' S( G5 ~& ?4 g5 `3 W
3.6 OBJECTFACTORY详解 73( O) p7 n, o9 G
3.7 PROXYFACTORY详解 74
6 V+ j: m) {+ y& o- o% T/ E/ ?3.8 本章小结 75
& W5 K9 W. W0 D3 Q8 ]0 H/ Q/ f第4章 MyBatis核心组件介绍 76
5 x. P0 C# ]9 A% C1 N+ i$ W4.1 使用MYBATIS操作数据库 76
9 e" \4 P; Z5 { k) C. d$ I& {4.2 MYBATIS核心组件 809 }3 A! L2 G$ Q+ N$ w
4.3 CONFIGURATION详解 82
$ v) V$ f) R2 p- H4.4 EXECUTOR详解 88
8 ~! I- n( p# Z( J+ K! r: F- o# B4.5 MAPPEDSTATEMENT详解 905 w: f& ~1 ^" `/ _! a
4.6 STATEMENTHANDLER详解 92
; j( [/ o% k. c( Z# y4.7 TYPEHANDLER详解 948 V3 d0 [( V1 \4 l/ U
4.8 PARAMETERHANDLER详解 979 @7 U5 h# n1 X( |9 t9 e$ L; L
4.9 RESULTSETHANDLER详解 986 M4 l0 n) [$ e
4.10 本章小结 100" ?, M: S; Y/ ?: N
第5章 SqlSession的创建过程 101. ]1 P+ [" o* F0 Z+ a
5.1 XPATH方式解析XML文件 101; C& p) v y2 D8 v S0 K! L3 I8 _
5.2 CONFIGURATION实例创建过程 1044 t' d1 P9 V; f; n& Z5 l* d
5.3 SQLSESSION实例创建过程 108
! Q4 C: q2 t7 v6 ^0 g5.4 本章小结 109
/ d7 K8 m8 ^2 |% M0 G' h5 D T第6章 SqlSession执行Mapper过程 1109 a3 ^. U0 A1 R" K4 k; w6 `' C
6.1 MAPPER接口的注册过程 110
9 r8 l3 _1 a1 {5 E0 {# b" Y# A5 Z& G6.2 MAPPEDSTATEMENT注册过程 114) g& E! b2 w0 t) u
6.3 MAPPER方法调用过程详解 119: Y& s ]5 N5 T+ Y8 X1 `
6.4 SQLSESSION执行MAPPER过程 126
. X) |, j& T, t" U5 A* D& @6.5 本章小结 130
javazx.com% @( O. ^" d! r3 j; y/ `) v
第7章 MyBatis缓存 131
2 k2 E- ?& [ S5 x Y& R" O7.1 MYBATIS缓存的使用 131' F3 i% s; o6 R) K' s" C8 Z
7.2 MYBATIS缓存实现类 1322 h b" S2 [6 h0 b1 R8 n2 b
7.3 MYBATIS一级缓存实现原理 135: X0 i& h. K: ~
7.4 MYBATIS二级缓存实现原理 138
3 d* p/ Z$ t- n9 `7.5 MYBATIS使用REDIS缓存 1429 t5 j" `! _1 x7 W; E: H2 P6 ^
7.6 本章小结 1453 g7 O2 a, b6 X0 B: u& _9 d3 n. R
第8章 MyBatis日志实现 146
7 l# Y( i8 Y- ]9 Z8.1 JAVA日志体系 146" B1 n) _# B' `( t2 x% N; n; w4 n
8.2 MYBATIS日志实现 1493 k8 o4 w& B" @# C' p* b
8.3 本章小结 155* n- k: C5 D+ e
第9章 动态SQL实现原理 156
8 N2 N9 D, X8 }, Z9.1 动态SQL的使用 156+ [# X. S5 ?* o. I
9.2 SQLSOURCE与BOUNDSQL详解 159' t) \9 \# F4 ?2 r5 q
9.3 LANGUAGEDRIVER详解 161
( N5 t; C7 C9 H- q H* Y" a9.4 SQLNODE详解 164. e) ?7 h% r- }' p: n
9.5 动态SQL解析过程 169/ y& o) j) }2 l- q7 e5 M: p
9.6 从源码角度分析#{}和${}的区别 179 S$ h0 H# e, S! |6 D7 X. m& J
9.7 本章小结 182' m/ I* b" ^8 W8 I4 i* _- W( ]
第10章 MyBatis插件原理及应用 184
1 J5 T8 Z7 v# @) p& s$ m( P4 q10.1 MYBATIS插件实现原理 184
: P# W1 e* ] @9 s9 a10.2 自定义一个分页插件 193
) d) p7 ?5 I( D1 n10.3 自定义慢SQL统计插件 1984 N# K6 }1 V: ^- H" H) C
10.4 本章小结 200$ |/ L4 \! ], O
第11章 MyBatis级联映射与懒加载 201
; B- N( I! U, K% E* A# N. n11.1 MYBATIS级联映射详解 201* |" {, L5 ^% u, w6 Y9 T
11.1.1 准备工作 2012 ~# u0 i! A# B5 ?- Y1 }' P
11.1.2 一对多关联映射 2057 }: N! \7 n& o( A. a' X' \: n0 t' n
11.1.3 一对一关联映射 206
Q1 T) E3 v6 ]3 n5 b11.1.4 Discriminator详解 209
2 P! h0 y2 q6 Z: t) F# z11.2 MYBATIS懒加载机制 210
$ X2 a2 @7 O! n7 D% l# p/ i9 d/ a1 `11.3 MYBATIS级联映射实现原理 212
2 n$ l6 S" c( }& t11.3.1 ResultMap详解 2121 |6 v" E5 |1 G& d: u
11.3.2 ResultMap解析过程 213
: F6 @! d. t' N% @: r; E! U/ U9 a# e9 k11.3.3 级联映射实现原理 218: a5 p0 o v6 z5 r) k3 U
11.4 懒加载实现原理 225
, E! b" {* g% E- P8 k$ w# w- ^11.5 本章小结 230
第2篇 MyBatis Spring源码
第12章 MyBatis与Spring整合案例 233
' d8 L2 E% H# f7 s& U4 T12.1 准备工作 233
2 R5 V$ R7 M+ e4 V' D9 }# Z12.2 MYBATIS与SPRING整合 234
) b8 N- O0 D4 j9 L$ I12.3 用户注册案例 2360 n: m. ] X7 ?3 S
12.4 本章小结 2391 p% o- t/ Y6 X! P3 X A
第13章 MyBatis Spring的实现原理 2407 t" U' J3 Q3 Q3 ~/ s. D- z5 M+ i
13.1 SPRING中的一些概念 240
5 O" O# }& D, S- X13.2 SPRING容器启动过程 2434 n0 ~$ U. o6 l3 h! ^0 J
13.3 MAPPER动态代理对象注册过程 2443 E& D+ a% B9 u: q; _ z" T! }" u
13.4 MYBATIS整合SPRING事务管理 248
5 X: d. o1 C3 Q1 N3 s f$ d7 k y+ A13.5 本章小结 253