第1篇 MyBatis 3源码
第1章 搭建MyBatis源码环境 39 ]3 D5 p2 @0 @3 O: T
1.1 MYBATIS 3简介 3
- z( N; m, l8 }1.2 环境准备 4
" I7 ?6 F# H% p8 p# u. r1.3 获取MYBATIS源码 47 }! ?# |# s, ?; e
1.4 导入MYBATIS源码到IDE 6
" y; P6 v6 z( x1.5 HSQLDB数据库简介 9
. }, A/ d" c) C5 o1.6 本章小结 11
6 t- J3 X& ]$ d5 G7 |+ W8 L4 S第2章 JDBC规范详解 13+ E8 |- Z/ i, i0 ~# F
2.1 JDBC API简介 13
! @& c" d$ e& n7 W7 k v. z0 Z$ v4 n2.1.1 建立数据源连接 14
- Z- \" U0 v8 }5 _* R; _2.1.2 执行SQL语句 15
6 c% \! ^7 L' p! S: K2.1.3 处理SQL执行结果 16
. m$ e- d4 L: t6 F2.1.4 使用JDBC操作数据库 16
4 e$ W" x4 u7 J6 E! X+ s: n2.2 JDBC API中的类与接口 17
5 w1 O( x4 `/ g% @/ d2.2.1 java.sql包详解 176 \% [, h, F8 e! }0 k
2.2.2 javax.sql包详解 20
" j" W0 E' l6 s$ ^$ o2.3 CONNECTION详解 24) H" @; S; u2 j
2.3.1 JDBC驱动类型 24
a# e% w- {4 u$ F) P2.3.2 java.sql.Driver接口 26$ b! V) Y. L1 ~- ?& p7 w
2.3.3 Java SPI机制简介 27
" X2 }7 ~5 K# {' r4 ~$ D$ i2.3.4 java.sql.DriverAction接口 29
1 _9 l5 k/ H- d5 x2.3.5 java.sql.DriverManager类 29* m7 O3 S* g" W% E" P/ |# U
2.3.6 javax.sql.DataSource接口 310 W9 ]9 T! g8 |
2.3.7 使用JNDI API增强应用的可移植性 32% K9 c) J' i5 s
2.3.8 关闭Connection对象 34
& f" q' D$ B% @$ Q4 x0 t/ {2.4 STATEMENT详解 35
% P+ K; P/ y* {4 p/ C: U2.4.1 java.sql.Statement接口 35" z+ t$ i9 I; ]+ _. F
2.4.2 java.sql.PreparedStatement接口 39& m. D4 t; A2 Q% u' [
2.4.3 java.sql.CallableStatement接口 43- P6 p8 Q( E4 q! l
2.4.4 获取自增长的键值 44, G- h8 [+ ?& Y; Z5 y# \
2.5 RESULTSET详解 45
9 O1 M w& o" j" d- ?. _2 f7 A2.5.1 ResultSet类型 455 E$ s& i* }% _$ g6 i% X* {
2.5.2 ResultSet并行性 46
7 y- p1 _+ J- q4 e* U* v! t2.5.3 ResultSet可保持性 46
" C3 w# _2 d& Y" ~2.5.4 ResultSet属性设置 470 k! z% {, F$ J
2.5.5 ResultSet游标移动 47( g6 y0 H G. i
2.5.6 修改ResultSet对象 48- F" g( q \3 Z; V% k
2.5.7 关闭ResultSet对象 50
4 i% B" c0 o1 j3 ^1 K* |2.6 DATABASEMETADATA详解 516 ^! m) z) y) D
2.6.1 创建DatabaseMetaData对象 51
& r9 R" W: f m2.6.2 获取数据源的基本信息 51
9 n/ A$ V6 |9 f' B2 M2.6.3 获取数据源支持特性 53( W) j$ z1 I0 ~# J& a
2.6.4 获取数据源限制 53# D( B2 `: w5 |' X5 Z6 c6 w
2.6.5 获取SQL对象及属性 54
2 @" M2 {* v8 R F& ?8 F* k2.6.6 获取事务支持 54" h) i& Y! {0 ?$ j$ V4 G, Y" k3 r
2.7 JDBC事务 54
5 }& E7 k& r B2.7.1 事务边界与自动提交 55
& C# ^2 ~3 \8 z' a4 G8 x/ T2.7.2 事务隔离级别 55- ~: z/ ~$ j6 S4 @. O
2.7.3 事务中的保存点 56
6 [5 Q8 Q4 {% z) j& Y' h. X2.8 本章小结 57
$ L) [ G* G! W6 _$ z6 @& v+ p( [第3章 MyBatis常用工具类 58
$ V6 `$ w% u3 s% M% q" ?6 h3 V" A7 a3.1 使用SQL类生成语句 58
; b, ^* H1 n! V& D5 n3.2 使用SCRIPTRUNNER执行脚本 64
% V6 w4 x' |5 p4 ?( m3 L3.3 使用SQLRUNNER操作数据库 678 }+ S$ O( G+ K
3.4 METAOBJECT详解 71+ g, T: j% q( q( e6 [3 Q
3.5 METACLASS详解 722 _& q4 ?. X. A
3.6 OBJECTFACTORY详解 73
5 t0 z" j7 s$ e1 j5 l3.7 PROXYFACTORY详解 747 G" t g) e; Y2 P' N2 C/ {; J
3.8 本章小结 75
3 s7 X D2 h8 `9 X% n. W第4章 MyBatis核心组件介绍 76
T: r" t! {+ n' R, n8 Y; ]4.1 使用MYBATIS操作数据库 76
% W0 [. `' J7 z$ B6 F. y& m2 _4.2 MYBATIS核心组件 80
( u* P. n" g' Y4.3 CONFIGURATION详解 821 ]9 P7 N( w; D& e5 W7 z. F
4.4 EXECUTOR详解 88
5 O" A) O' Y$ g8 }" [) v* ]4.5 MAPPEDSTATEMENT详解 90
# ^* }# e- l' s: N" l8 |& b4.6 STATEMENTHANDLER详解 92
2 ]+ a& k4 B2 k3 v5 B) R: Q# E, }4.7 TYPEHANDLER详解 94- s% k$ F8 ?" B
4.8 PARAMETERHANDLER详解 97
. a. |5 m h. u4.9 RESULTSETHANDLER详解 98
7 ~* K H) t! W: K. }4.10 本章小结 100- Z4 C8 g$ ?- I" [! a |4 p- s, Q. A
第5章 SqlSession的创建过程 101# P- ?; {& n/ x
5.1 XPATH方式解析XML文件 101
( I4 e1 y) r" y% ^0 ?6 i) A w5.2 CONFIGURATION实例创建过程 104# K5 y7 \9 \: d ~' r( _3 e
5.3 SQLSESSION实例创建过程 108
$ ]4 u5 H6 s/ x- J+ k/ H5.4 本章小结 109
4 ]7 j( t0 k4 ~5 N2 o第6章 SqlSession执行Mapper过程 1108 L7 {0 _$ v9 R8 I2 a
6.1 MAPPER接口的注册过程 110; m( a% D$ P. q+ j+ ^
6.2 MAPPEDSTATEMENT注册过程 114
. q7 z4 E8 D/ K; T; z, f/ @3 U! ^6.3 MAPPER方法调用过程详解 119 Y0 ]* L+ F, Q6 m$ R4 `. D
6.4 SQLSESSION执行MAPPER过程 126/ g& I7 n. ]# V/ r' \; d6 @3 f4 u8 p$ k
6.5 本章小结 130
javazx.com% V: | x) p* v9 }, ~7 ?
第7章 MyBatis缓存 131
3 I5 t% Q( v1 E7.1 MYBATIS缓存的使用 131$ l$ E' Z# z, t# B) W0 U7 ~
7.2 MYBATIS缓存实现类 132! @# [: j8 s$ o; k# h8 P
7.3 MYBATIS一级缓存实现原理 135
8 D3 @6 s4 C4 _- e, ?7.4 MYBATIS二级缓存实现原理 138, a: q9 I8 G* {3 ?
7.5 MYBATIS使用REDIS缓存 142
) u) T D+ ] n3 ^' c! t7.6 本章小结 145
: s7 R9 Q% P; n! C+ g9 ]$ Z: j第8章 MyBatis日志实现 146 m ]) M; a% x f- H4 V3 }
8.1 JAVA日志体系 1464 g6 j; ^ {' o$ ?
8.2 MYBATIS日志实现 149
% r. [; I+ f/ ?8.3 本章小结 1552 G! E$ S+ ] l$ z, a
第9章 动态SQL实现原理 156, V* p2 t# M* U+ d
9.1 动态SQL的使用 156
; o% r5 F: v% }+ q! f) d4 t8 k; _1 O9.2 SQLSOURCE与BOUNDSQL详解 159& a: N' Y$ Y% x
9.3 LANGUAGEDRIVER详解 1614 }' u5 U8 r5 `5 q# a6 ]
9.4 SQLNODE详解 164
$ Z. H% ]- r# {2 M! b9.5 动态SQL解析过程 169
8 \ J% X+ `" E, o* A, s5 ?9.6 从源码角度分析#{}和${}的区别 179
, \9 ]& a# W- m0 G9.7 本章小结 1829 p! k% n9 k6 [4 _1 t
第10章 MyBatis插件原理及应用 184
, g0 y1 {' ~- K( d, p! p+ r10.1 MYBATIS插件实现原理 184
m+ A$ K9 p$ T6 R10.2 自定义一个分页插件 1936 {3 z9 K4 M! t$ d9 s
10.3 自定义慢SQL统计插件 198
& B3 R% h% F7 q# a10.4 本章小结 200
- _2 L5 i! q; a2 k% m' M6 }' d第11章 MyBatis级联映射与懒加载 201$ O2 M/ D7 t# y, s! C
11.1 MYBATIS级联映射详解 201( ]2 K0 i) w) H/ y, }
11.1.1 准备工作 201
5 @5 D+ g' X5 C+ C11.1.2 一对多关联映射 205
: r1 y" k6 R* u" [3 f# }11.1.3 一对一关联映射 206
- G( E M8 [9 M7 [# L11.1.4 Discriminator详解 209* f) i/ u$ R! ?/ s. ]
11.2 MYBATIS懒加载机制 210% O- S5 @6 d9 o( g4 D
11.3 MYBATIS级联映射实现原理 2121 }- O+ d6 v) E% [ n' d
11.3.1 ResultMap详解 212
+ e8 @1 v& u5 r11.3.2 ResultMap解析过程 213+ z; U- m) H* ]' R4 J
11.3.3 级联映射实现原理 218
0 @3 B( n, I; p! v* L0 z' C11.4 懒加载实现原理 225
: R- P/ _5 e9 f* u6 {7 z, m11.5 本章小结 230
第2篇 MyBatis Spring源码
第12章 MyBatis与Spring整合案例 233$ h) i: q" A' j6 b- U% A
12.1 准备工作 233+ @2 Y8 X0 d2 Y {! h
12.2 MYBATIS与SPRING整合 234
- m1 a& S$ o6 {6 U; K8 q12.3 用户注册案例 236+ T! F+ i+ O( X# c- f
12.4 本章小结 2396 ], J1 P. H8 \4 f- X
第13章 MyBatis Spring的实现原理 240
/ K2 k9 {! k- \$ s. L13.1 SPRING中的一些概念 240# w- I' I' F' Z( W
13.2 SPRING容器启动过程 243! Z3 K5 Z J6 U- A& D
13.3 MAPPER动态代理对象注册过程 2447 D' m% Q& q2 I/ s' C* O
13.4 MYBATIS整合SPRING事务管理 2482 I5 l# F% C- j1 J$ J( x. q7 |6 F6 K
13.5 本章小结 253