第1篇 MyBatis 3源码
第1章 搭建MyBatis源码环境 3
y' ~9 X) T' c7 T1.1 MYBATIS 3简介 3
, y$ h1 l6 w9 o1.2 环境准备 4: ~ N) G* p# I, o
1.3 获取MYBATIS源码 4
- ^* s3 S; R( G/ b7 T( _1.4 导入MYBATIS源码到IDE 67 _ q: C- H- z( j' a
1.5 HSQLDB数据库简介 9" Q: g/ l$ C% V
1.6 本章小结 11, H/ d0 L$ ?& {0 S4 N
第2章 JDBC规范详解 13
" ^. |0 L5 y W2.1 JDBC API简介 13
# P4 F8 _9 A P! Y% y2.1.1 建立数据源连接 145 f0 `* ~" @/ o! o9 }7 i
2.1.2 执行SQL语句 15& i1 ~4 D, r- a: s0 D4 n5 q
2.1.3 处理SQL执行结果 164 B8 \, S8 E5 k/ P7 x, |* M ~# [0 A1 c
2.1.4 使用JDBC操作数据库 16
4 _' t. }9 f/ H% v+ \2.2 JDBC API中的类与接口 170 K0 w! B# V- e2 Z( U1 s. j
2.2.1 java.sql包详解 17( G% c( R }1 `9 b# H8 _% @, a
2.2.2 javax.sql包详解 204 ^' f" z* Q7 B' F
2.3 CONNECTION详解 24
@0 O1 N m8 `1 W. A1 A, \2.3.1 JDBC驱动类型 24
! l# |. \6 m2 \* i2.3.2 java.sql.Driver接口 26
; x- C5 Z7 I; J+ a0 d/ r2.3.3 Java SPI机制简介 27/ J9 j& D8 B/ E7 Y( T
2.3.4 java.sql.DriverAction接口 29
+ x6 R. e4 _ W; W/ b6 K2.3.5 java.sql.DriverManager类 29
0 M- i6 I- o( S! H) o. h8 Y2.3.6 javax.sql.DataSource接口 31
0 A1 S {- y* M" q9 K3 |3 N& b8 ?, ~2.3.7 使用JNDI API增强应用的可移植性 32& {5 W' a6 V; U4 ?
2.3.8 关闭Connection对象 34+ |7 W/ ^6 U- h y1 D4 s
2.4 STATEMENT详解 35
) A2 |8 }- S" F; J8 s' r2.4.1 java.sql.Statement接口 35+ U2 q( s" ~- \$ A/ V7 Q
2.4.2 java.sql.PreparedStatement接口 39
7 l6 ^+ i" o, S( q2.4.3 java.sql.CallableStatement接口 43' ^7 f; P* `% o
2.4.4 获取自增长的键值 44 L" K. s' s: a( |1 R
2.5 RESULTSET详解 45
: L2 j9 C7 N- f# ]+ P3 @, }& M5 l2.5.1 ResultSet类型 45
4 w2 e6 g( ]1 t. q2 l0 v9 Y0 N2.5.2 ResultSet并行性 463 O! o+ f% D4 Z
2.5.3 ResultSet可保持性 46
. V+ K# N: Z6 ]+ X2 j5 J2.5.4 ResultSet属性设置 47
3 T& i" D: j8 L3 W2.5.5 ResultSet游标移动 47
4 K- H* U! P0 f2.5.6 修改ResultSet对象 48) ]% r- d( B8 }; { Q
2.5.7 关闭ResultSet对象 50
% i G9 q9 G& H" Y) v6 I2.6 DATABASEMETADATA详解 51
, U9 N0 X0 q O/ w8 [; S3 q2.6.1 创建DatabaseMetaData对象 51
6 Y$ K, d) U( j2 q+ z2.6.2 获取数据源的基本信息 511 A. N/ I, U- i- X
2.6.3 获取数据源支持特性 530 W/ U5 ?, T6 P1 {
2.6.4 获取数据源限制 53
- Q+ E Q! _& e9 g: u2.6.5 获取SQL对象及属性 54
' O4 F4 @- b& ]4 C: m+ [2.6.6 获取事务支持 54" q! \6 b, S* k; n7 l
2.7 JDBC事务 54
! k* ` L0 L7 \4 {! Y; M6 t2.7.1 事务边界与自动提交 55
0 M1 X9 O. u8 ~2.7.2 事务隔离级别 552 M) C+ I6 d$ \2 }) t2 Y
2.7.3 事务中的保存点 56
# @- h. t- r* K$ ]$ ]* s2.8 本章小结 57
9 V$ i) I/ q d; k" r第3章 MyBatis常用工具类 58
& l) w6 E8 X3 c2 o3.1 使用SQL类生成语句 58+ G+ y% v8 c0 ~; _' [$ s
3.2 使用SCRIPTRUNNER执行脚本 64: ?2 A/ H4 ^; H0 _1 _
3.3 使用SQLRUNNER操作数据库 67
2 w$ x! F* Z4 X! ^) B6 W+ F3.4 METAOBJECT详解 71
/ B) v# M1 P/ i- H4 ^ K4 p3.5 METACLASS详解 72% J |$ z( ]7 L+ }% t" ?
3.6 OBJECTFACTORY详解 73- R0 x2 N5 ]6 @, j4 r
3.7 PROXYFACTORY详解 74, V) u6 n! H$ Z B' Z6 N, |' R
3.8 本章小结 75
; T( ?& J" @8 E0 Q3 G第4章 MyBatis核心组件介绍 76
6 u' w; ^6 ?% ?* Y7 o* a5 j4.1 使用MYBATIS操作数据库 761 a. i7 K' T, f$ ?1 x
4.2 MYBATIS核心组件 80" P; {4 q# ?, }& W
4.3 CONFIGURATION详解 82
2 x3 P: W6 b, G; T6 w4.4 EXECUTOR详解 88
* `, _* T4 }* S4.5 MAPPEDSTATEMENT详解 90& [1 ~% f% D% R" t
4.6 STATEMENTHANDLER详解 92
( D; O! }5 `- L! h8 W |, L4.7 TYPEHANDLER详解 94& m% ~5 Y$ m4 K; F( I4 t
4.8 PARAMETERHANDLER详解 97: v( A% d; C- c1 o5 [
4.9 RESULTSETHANDLER详解 98
! l$ {1 [3 f7 \5 P; S4.10 本章小结 100
& G- U, y. H$ p" W第5章 SqlSession的创建过程 101 z( g/ `' I7 l0 r* q
5.1 XPATH方式解析XML文件 101! ]* Z0 O" t2 `' c& h
5.2 CONFIGURATION实例创建过程 104
! v: ?& \. }. b0 I c5.3 SQLSESSION实例创建过程 108
' Y4 h, H) i9 _) y' `5.4 本章小结 109
0 ~- W3 ^- F* N9 Y第6章 SqlSession执行Mapper过程 1100 }, i) A% {. z' f
6.1 MAPPER接口的注册过程 1108 U# o0 [9 f2 I7 r) o9 M
6.2 MAPPEDSTATEMENT注册过程 1145 S' w4 w) Y, y P( }& l. J- b4 ^. R
6.3 MAPPER方法调用过程详解 119
# Z, g: s' ?, o9 y& v6.4 SQLSESSION执行MAPPER过程 126 l, P( }) z7 E$ @# @/ J
6.5 本章小结 130
javazx.com
' v% x! l' p E+ k- c1 C第7章 MyBatis缓存 131& ~3 O# p& S. C5 H# f
7.1 MYBATIS缓存的使用 131& F% W+ K' L4 Z0 B
7.2 MYBATIS缓存实现类 132
( K1 h8 z c# C1 @7.3 MYBATIS一级缓存实现原理 135
4 g( L- ^ Q% Y$ m7.4 MYBATIS二级缓存实现原理 1381 Z( C. _& Y" b
7.5 MYBATIS使用REDIS缓存 1424 K# z6 \, U# Q- c% Q6 W4 |
7.6 本章小结 145
" S- F0 a( b p6 W+ O第8章 MyBatis日志实现 1463 b( x4 ?! G9 ?, \4 z. J
8.1 JAVA日志体系 146
. G2 g: b! e" e9 }! Z- A5 U8.2 MYBATIS日志实现 149
! e, Y ^5 E7 H+ n! m$ j# t8.3 本章小结 155
9 n$ E5 l! i" t2 O第9章 动态SQL实现原理 156* {- w. m' Q5 j/ h" i' {4 R% j; W
9.1 动态SQL的使用 156
4 p1 v2 R! `2 v5 {: o9.2 SQLSOURCE与BOUNDSQL详解 159# s! V: |: S2 U# f! X' k
9.3 LANGUAGEDRIVER详解 161
6 ~9 l$ N v- I7 f9.4 SQLNODE详解 1647 n, C& P2 L3 `! W
9.5 动态SQL解析过程 169
) p$ B6 D7 ^6 z' }2 C9 |9.6 从源码角度分析#{}和${}的区别 179
; O. I9 z. C* i) M9 A, Z, ]* s9.7 本章小结 182
/ ^- b: F. G7 |: Z! E第10章 MyBatis插件原理及应用 184
' q/ X; n- {4 _/ B/ v10.1 MYBATIS插件实现原理 1848 U4 T& ?$ Z0 e" D$ [) c) y
10.2 自定义一个分页插件 1932 D) q$ l% @# D7 H( `. I) t+ q3 h
10.3 自定义慢SQL统计插件 198
/ X2 ~ T2 c+ |1 [: x$ L4 X10.4 本章小结 200" J/ Z M' f* \- i
第11章 MyBatis级联映射与懒加载 201
7 o( x4 p+ V ~" |6 I. Q11.1 MYBATIS级联映射详解 201
2 i# k. d) V: V" G! |+ h11.1.1 准备工作 201
( V W- J+ U w. j2 g& S+ O' |11.1.2 一对多关联映射 205/ [6 `" p7 v; [! k+ B
11.1.3 一对一关联映射 206
$ ~$ f' L0 a& y, n11.1.4 Discriminator详解 209) K; m/ T1 A9 U- B+ U7 ]) w4 s0 z
11.2 MYBATIS懒加载机制 210
, x3 G( ~/ M5 Y$ o/ r8 ]11.3 MYBATIS级联映射实现原理 212
v. p# T9 W; D- W* k11.3.1 ResultMap详解 212
* c, {2 Z, K( T. L6 }% t11.3.2 ResultMap解析过程 2136 r( a$ U& J' |) R4 h+ l& F
11.3.3 级联映射实现原理 218
/ V; ~( c( }+ {$ |* {11.4 懒加载实现原理 225
; d$ P- E$ X. g11.5 本章小结 230
第2篇 MyBatis Spring源码
第12章 MyBatis与Spring整合案例 2336 D! H# b/ V- ^- h; _
12.1 准备工作 233
: g; p+ u+ f/ S8 r, z; ]: d3 \. G( C0 u12.2 MYBATIS与SPRING整合 234+ l, O8 K1 U7 g, v& a- a
12.3 用户注册案例 236
* u5 m% b& Y) ^+ v12.4 本章小结 2394 t' Z8 I( r0 F/ c/ L
第13章 MyBatis Spring的实现原理 240
0 U) o- @. y+ U4 F: W13.1 SPRING中的一些概念 240 H3 p3 H$ u9 M/ n3 B
13.2 SPRING容器启动过程 243
4 Q) c2 l# a, |- n13.3 MAPPER动态代理对象注册过程 244
- p; |3 Y- h! z2 j13.4 MYBATIS整合SPRING事务管理 2482 L+ }% j& w: ]8 W% v
13.5 本章小结 253