第1篇 MyBatis 3源码
第1章 搭建MyBatis源码环境 3
" z2 O5 i% b( D# b, T1.1 MYBATIS 3简介 3
" k1 n" r* l3 Z% s1.2 环境准备 48 {$ K( h H; l, G: u1 r
1.3 获取MYBATIS源码 4
0 H0 T) B, e9 l* q0 u$ S4 ?1.4 导入MYBATIS源码到IDE 6
2 b5 _1 m0 s; o5 m1 {1.5 HSQLDB数据库简介 9
9 t+ V M; \# y0 `: z$ t1.6 本章小结 118 O; x5 I; ?! z7 F8 \
第2章 JDBC规范详解 13
+ ?! C v Q* u1 K( E$ u) k [2.1 JDBC API简介 133 C; R9 I# S' _$ X' V4 S
2.1.1 建立数据源连接 14 ? k$ g: c4 q: H' A) u
2.1.2 执行SQL语句 156 q2 C. k( W: Y% n
2.1.3 处理SQL执行结果 16$ p. p, U2 b4 N5 H: U0 y# [
2.1.4 使用JDBC操作数据库 16; W& s L% C3 W) _
2.2 JDBC API中的类与接口 17
2 l/ d# M2 Y' F H( B2.2.1 java.sql包详解 17
) E- u/ P) r; f4 V6 a8 R) U2.2.2 javax.sql包详解 20% f! {. C1 u; K8 ?
2.3 CONNECTION详解 248 B9 g! V& p1 R6 C4 e
2.3.1 JDBC驱动类型 24
) w5 z2 l9 ?' v7 u2.3.2 java.sql.Driver接口 26
o C) m5 m) |2.3.3 Java SPI机制简介 27" w/ u% ]# P& A% j8 P
2.3.4 java.sql.DriverAction接口 29
' p# e& R) z2 {% j4 ^3 I# X7 G2.3.5 java.sql.DriverManager类 29
+ D) g: G7 d, o g t' U7 c2.3.6 javax.sql.DataSource接口 310 ?' n0 X9 j$ y4 {7 T
2.3.7 使用JNDI API增强应用的可移植性 32, o" `5 ?" ^( X# b
2.3.8 关闭Connection对象 34
# Y+ M, D+ B/ ` H5 `; s2.4 STATEMENT详解 35
+ j* k0 K' |; y% L& M: W3 w2.4.1 java.sql.Statement接口 351 n9 B% J$ n* C# S: O2 q2 s
2.4.2 java.sql.PreparedStatement接口 399 y; [) L; W3 U3 }) K; B3 d' x
2.4.3 java.sql.CallableStatement接口 43
4 l, H& ~. @" {7 _ r5 b/ [2.4.4 获取自增长的键值 44& _2 o# n% w" b% {# {5 P
2.5 RESULTSET详解 45* h0 P. N: s) T
2.5.1 ResultSet类型 453 d/ d g4 d1 P
2.5.2 ResultSet并行性 46
* {# y0 Q' ^6 r9 Q2 e# }0 v7 I2.5.3 ResultSet可保持性 461 n! b& B) ^, ?7 R) N- @% B1 x
2.5.4 ResultSet属性设置 47
4 @1 I7 Y; y, F9 b g3 z2.5.5 ResultSet游标移动 47
; g( N+ D! S" a' w, C1 H2.5.6 修改ResultSet对象 48
( P! B7 Z9 ?5 d* @ @2.5.7 关闭ResultSet对象 50
, l) ]/ \! |2 A0 {+ U2 a2.6 DATABASEMETADATA详解 51
E4 Z* n5 M2 c& X$ \2.6.1 创建DatabaseMetaData对象 51
@5 D3 K& [+ H. P2.6.2 获取数据源的基本信息 51
' G* e2 _" h) v; T2.6.3 获取数据源支持特性 53: _+ A; R4 }* v$ R) l z+ z$ Y
2.6.4 获取数据源限制 536 j W" ?( u2 x5 I j: J( S3 F& S2 f! [
2.6.5 获取SQL对象及属性 54
/ K* P7 @' G4 N5 B+ Z2.6.6 获取事务支持 54
: `9 {$ o7 H" c0 } K2.7 JDBC事务 541 A6 `3 Q( J% R6 Q, N
2.7.1 事务边界与自动提交 55
/ d+ {$ c* l& H' |; t n! A2.7.2 事务隔离级别 55
/ U& q, A0 r5 X/ w7 i2.7.3 事务中的保存点 56* S/ a+ R- w, H/ @( K' ~0 A
2.8 本章小结 57% \+ \$ q. ?% W- m, J0 b$ b
第3章 MyBatis常用工具类 58
, n; z: r7 W& B5 W& ~/ h8 S! K# z3.1 使用SQL类生成语句 58' M+ J" l4 s% C. b
3.2 使用SCRIPTRUNNER执行脚本 64
9 Y3 q5 _4 c8 u5 C! }2 T; q* |3.3 使用SQLRUNNER操作数据库 674 j6 g& e6 C, J5 F
3.4 METAOBJECT详解 713 g: @) N5 I) A# Z
3.5 METACLASS详解 72
* d3 g# G9 I+ B* U" l3.6 OBJECTFACTORY详解 73; O- `% V" Z' `' w0 q# P: }0 b
3.7 PROXYFACTORY详解 74/ i5 B# Q" o% c. v% V2 b3 A
3.8 本章小结 75
7 g/ b# R% `/ O9 f! b第4章 MyBatis核心组件介绍 76. r" ^ G) M" y) @
4.1 使用MYBATIS操作数据库 76" b6 o; V& Y) m& [- m; |& E. g
4.2 MYBATIS核心组件 80
# o: v* H6 P1 A$ J% z7 Y4.3 CONFIGURATION详解 82) ]9 U5 Y9 [, \4 v% J/ g% @! C6 B
4.4 EXECUTOR详解 88* G; F4 `! I0 G$ Q" I! L
4.5 MAPPEDSTATEMENT详解 90
\+ [$ t& m% s7 F4 G, Y' s4.6 STATEMENTHANDLER详解 92
! e' [' W% R2 c( m8 X4.7 TYPEHANDLER详解 94
`9 l6 u% z3 d! ~ X4.8 PARAMETERHANDLER详解 979 f) i7 U4 W+ {) u w
4.9 RESULTSETHANDLER详解 98
+ k$ H% s9 { E) M0 F# _" q4.10 本章小结 100* L6 \* a1 G* r- p' r, i
第5章 SqlSession的创建过程 101* M% I( L0 \( y& s& J& V/ S
5.1 XPATH方式解析XML文件 101. T; ] `0 w' @1 U e
5.2 CONFIGURATION实例创建过程 104
, k7 m4 x4 B9 `) N1 N& V4 h5.3 SQLSESSION实例创建过程 108! @6 B2 \/ ~6 M% W8 j1 b
5.4 本章小结 109
; j- Q+ {4 p/ f$ l6 ^第6章 SqlSession执行Mapper过程 110" C3 }5 O, h& m Z9 s) R/ V
6.1 MAPPER接口的注册过程 1100 D! C9 W5 g' G8 z
6.2 MAPPEDSTATEMENT注册过程 114
$ j8 O2 h- y. X8 }6.3 MAPPER方法调用过程详解 119
# ~6 Q [/ U- ~# W1 ?6.4 SQLSESSION执行MAPPER过程 126
; X6 z3 ]4 U; C6 s# {* Y# K6.5 本章小结 130
javazx.com
0 Y% Y7 p) n6 u, X; Q& {第7章 MyBatis缓存 131
+ u# d6 G# Z0 _7.1 MYBATIS缓存的使用 131
# X7 P1 d4 D3 @" V( r1 u7.2 MYBATIS缓存实现类 132* x6 R* Z2 M2 |( h4 n1 |# o5 p, F
7.3 MYBATIS一级缓存实现原理 135. e+ t% l- P) |
7.4 MYBATIS二级缓存实现原理 138
f* _2 G( A5 u/ A6 s; {, F7.5 MYBATIS使用REDIS缓存 142* i/ g) w& Z F& v- p. g
7.6 本章小结 1458 M4 x v4 O0 e1 v' L" ]
第8章 MyBatis日志实现 146
9 J3 p) s0 E" N# U9 [8.1 JAVA日志体系 146+ M* T: n! ~% D% ]
8.2 MYBATIS日志实现 1490 t9 a' S/ \: l( X- G8 C! E
8.3 本章小结 155! }1 B" y) c; x j2 k
第9章 动态SQL实现原理 1562 m! p/ O% r% k, A4 Q9 d; ? B
9.1 动态SQL的使用 156
3 q1 q! \) b6 h: K2 t( S2 \9.2 SQLSOURCE与BOUNDSQL详解 159
; S) [1 ^& q& _* O' Q& \9.3 LANGUAGEDRIVER详解 161
0 K; y( `* P, Z1 _9.4 SQLNODE详解 164
{1 m! c T/ o, R$ d9.5 动态SQL解析过程 169, {& Q) r2 d/ S" E) K5 T; U
9.6 从源码角度分析#{}和${}的区别 179
( O, U1 ]+ C0 L, H. p9 o" T6 q3 n9.7 本章小结 182) {' ^4 v# U4 g" w
第10章 MyBatis插件原理及应用 184
4 W- r' ^' Y3 w$ {+ F5 k10.1 MYBATIS插件实现原理 184! I% C2 M$ U$ X9 x! @
10.2 自定义一个分页插件 1938 L' f8 S0 D! s8 ?) J, ]
10.3 自定义慢SQL统计插件 198
+ A: K7 X( r) E0 q" ^10.4 本章小结 200
8 X6 I. t' ^# h5 s6 s第11章 MyBatis级联映射与懒加载 201
; d/ c# T; z6 {11.1 MYBATIS级联映射详解 2018 N/ y. b$ R5 F; h9 j2 z
11.1.1 准备工作 201
# G' D5 C& O! @( L' `' u! M6 Q5 m11.1.2 一对多关联映射 205
/ _0 K2 q& {) x0 n11.1.3 一对一关联映射 2066 T( ]# }& i) h& F k0 k) ]
11.1.4 Discriminator详解 2099 _0 H( `0 C/ K$ f d! B6 w
11.2 MYBATIS懒加载机制 210
7 Y/ P$ { ?1 M6 N9 w8 M5 ?5 g11.3 MYBATIS级联映射实现原理 2126 e7 L. u" W5 U6 f1 D
11.3.1 ResultMap详解 2126 E S2 g% _5 v! ?
11.3.2 ResultMap解析过程 213
4 G( t1 m+ M( H# B1 f11.3.3 级联映射实现原理 218- c# {0 B* r9 q; ]; T# Z3 m8 I
11.4 懒加载实现原理 225- o. U6 `# W6 S8 z
11.5 本章小结 230
第2篇 MyBatis Spring源码
第12章 MyBatis与Spring整合案例 233
+ B0 w' D' q, e4 o12.1 准备工作 233
. K9 J, \# W5 i12.2 MYBATIS与SPRING整合 234
7 J1 O5 V$ \' @5 d5 p* Q+ H12.3 用户注册案例 236- J3 Y3 s; y `- z" v' A
12.4 本章小结 2398 C/ w' l; ` F# B( {- ` {7 ]/ U
第13章 MyBatis Spring的实现原理 240
& U- G7 \0 Q; k8 M8 O0 n' t13.1 SPRING中的一些概念 240. H5 J( K, M- `8 p
13.2 SPRING容器启动过程 243
& k8 Q( l Y- K k5 k% G13.3 MAPPER动态代理对象注册过程 244# j% ]) R# X+ ^! W5 \6 K9 w
13.4 MYBATIS整合SPRING事务管理 248* H5 m/ M# ]& B, [5 h6 U/ H& ?
13.5 本章小结 253