71.8
7.2折
原价¥100.0

收藏
通用源码阅读指导书 MyBatis源码详解 易哥 电子社 MyBatis源码程序源码阅读的流程方法技巧书 编程语言知识设计模式架构技巧书籍
担保交易,安全保证,有问题不解决可申请退款。
商品属性
旷氏文豪图书专营店
旷氏文豪图书专营店
本商品由 旷氏文豪图书专营店 提供技术支持并发货!
进店逛逛

买家常见问题解答(必看)

商品详情
用户评价
交易规则

E3
 基本信息.jpg

1篇  背景介绍

1章  源码阅读2

1.1  源码阅读的意义2

1.2  源码阅读的方法2

1.3  开源软件3

1.4  MyBatis源码4

1.5  本书结构5

1.5.1  背景知识5

1.5.2  文件的指代5

1.5.3  方法的指代8

2章  MyBatis概述10

2.1  背景介绍10

2.1.1  传统数据库连接10

2.1.2  ORM框架11

2.1.3  MyBatis的特点12

2.2  快速上手12

2.2.1  MyBatis包的引入14

2.2.2  MyBatis的简单配置15

2.2.3  基于MyBatis的数据库作16

2.3  MyBatis的核心功能分析17

3章  MyBatis运行初探20

3.1  初始化阶段追踪23

3.1.1  静态代码块的执行23

3.1.2  获取InputStream24

3.1.3  配置信息读取25

3.1.4  总结27

3.2  数据读写阶段追踪27

3.2.1  获得SqlSession27

3.2.2  映接口文件与映文件的绑定28

3.2.3  映接口的代理28

3.2.4  SQL语句的查找31

3.2.5  查询结果缓存31

3.2.6  数据库查询33

3.2.7  处理结果集36

3.2.8  总结39

4章  MyBatis源码结构概述40

4.1  包结构40

4.2  分组结构40

2篇  基础功能包源码阅读

5章  eceptions包44

5.1  背景知识44

5.1.1  Java的异常44

5.1.2  序列化与反序列化45

5.2  Eception类46

5.3  EceptionFactory类47

6章  reflection包48

6.1  背景知识48

6.1.1  装饰器模式48

6.1.2  反50

6.1.3  Type接口及其子类54

6.2  对象工厂子包55

6.3  执行器子包57

6.4  属性子包59

6.5  对象包装器子包61

6.6  反核心类62

6.7  反包装类65

6.8  异常拆包工具65

6.9  参数名解析器68

6.10  泛型解析器69

7章  antations包与lang包76

7.1  Java注解详解76

7.2  Param注解分析78

8章  type包81

8.1  模板模式82

8.2  类型处理器83

8.2.1  类型处理器的基类与实现类83

8.2.2  TypeReference类85

8.3  类型注册表86

9章  io包89

9.1  背景知识89

9.1.1  单例模式89

9.1.2  代理模式89

9.1.3  静态代理90

9.1.4  VFS92

9.2  VFS实现类92

9.2.1  DefaultVFS类94

9.2.2  JBoss6VFS类94

9.3  类文件的加载96

9.4  ResolverUtil类97

10章  logging包100

10.1  背景知识100

10.1.1  适配器模式100

10.1.2  日志框架与日志级别102

10.1.3  基于反的动态代理103

10.2  Log接口105

10.3  Log接口的实现类107

10.4  LogFactory108

10.5  JDBC日志打印109

11章  parsing包113

11.1  背景知识113

11.1.1  XML文件113

11.1.2  XPath115

11.2  XML解析116

11.3  文档解析中的变量替换118

3篇  配置解析包源码阅读

12章  配置解析概述124

13章  binding包128

13.1  数据库作的接入128

13.1.1  数据库作的方法化129

13.1.2  数据库作方法的接入133

13.2  抽象方法与数据库作节点的关联134

13.3  数据库作接入总结136

13.3.1  初始化阶段136

13.3.2  数据读写阶段137

13.4  MyBatis与Spring、Spring Boot的整合137

14章  builder包139

14.1  建造者模式139

14.2  建造者基类与工具类142

14.3  SqlSourceBuilder类与StaticSqlSource类143

14.4  CacheRefResolver类和ResultMapResolver类145

14.4.1  CacheRefResolver类145

14.4.2  ResultMapResolver类146

14.5  ParameterEpression类148

14.6  XML文件解析149

14.6.1  XML文件的声明解析150

14.6.2  配置文件解析151

14.6.3  数据库作语句解析153

14.6.4  Statement解析155

14.6.5  引用解析157

14.7  注解映的解析159

14.7.1  注解映的使用159

14.7.2  注解映解析的触发160

14.7.3  直接注解映的解析164

14.7.4  间接注解映的解析164

15章  mapping包169

15.1  SQL语句处理功能169

15.1.1  MappedStatement类169

15.1.2  SqlSource类170

15.1.3  BoundSql171

15.2  输出结果处理功能171

15.2.1  ResultMap类172

15.2.2  ResultMapping类173

15.2.3  Discriminator174

15.3  输入参数处理功能176

15.4  多数据库种类处理功能176

15.5  其他功能178

16章  scripting包179

16.1  OGNL179

16.2  语言驱动接口及语言驱动注册表183

16.3  SQL节点树的组建186

16.4  SQL节点树的解析189

16.4.1  OGNL辅助类189

16.4.2  表达式求值器193

16.4.3  动态上下文194

16.4.4  SQL节点及其解析196

16.5  再论SqlSource202

16.5.1  SqlSource的生成202

16.5.2  DynamicSqlSource的转化205

16.5.3  RawSqlSource的转化206

16.5.4  SqlSource接口的实现类总结207

17章  datasource包208

17.1  背景知识208

17.1.1  java.sql包和java.sql包208

17.1.2  DriverManager209

17.1.3  DataSource209

17.1.4  Connection210

17.1.5  Statement211

17.2  数据源工厂接口211

17.3  JNDI数据源工厂213

17.4  非池化数据源及工厂214

17.4.1  非池化数据源工厂214

17.4.2  非池化数据源216

17.5  池化数据源218

17.5.1  池化数据源类的属性218

17.5.2  池化连接的给出与收回220

17.5.3  池化连接228

17.6  论数据源工厂229

4篇  核心作包源码阅读

18章  jdbc包232

18.1  AbstractSQL类与SQL类232

18.1.1  SafeAppendable内部类232

18.1.2  SQLStatement内部类233

18.1.3  AbstractSQL类235

18.1.4  SQL类236

18.2  SqlRunner类237

18.3  ScriptRunner类240

18.4  jdbc包的独立性241

19章  cache包243

19.1  背景知识243

19.1.1  Java对象的引用级别243

19.1.2  ReferenceQueue类244

19.2  cache包结构与Cache接口247

19.3  缓存键248

19.3.1  缓存键的原理248

19.3.2  缓存键的生成251

19.4  缓存的实现类252

19.5  缓存装饰器252

19.5.1  同步装饰器253

19.5.2  日志装饰器253

19.5.3  清理装饰器254

19.5.4  阻塞装饰器259

19.5.5  定时清理装饰器262

19.5.6  序列化装饰器263

19.6  缓存的组建264

19.7  事务缓存267

19.8  MyBatis缓存机制271

19.8.1  一级缓存271

19.8.2  二级缓存274

19.8.3  两级缓存机制277

20章  transaction包279

20.1  事务概述279

20.2  事务接口及工厂280

20.3  JDBC事务282

20.4  容器事务283

21章  cursor包284

21.1  Iterable接口与Iterator接口284

21.2  MyBatis中游标的使用285

21.3  游标接口285

21.4  默认游标286

21.4.1  CursorStatus内部类287

21.4.2  ObjectWrapperResultHandler内部类287

21.4.3  CursorIterator内部类288

21.4.4  DefaultCursor外部类289

22章  eecutor包293

22.1  背景知识293

22.1.1  基于cglib的动态代理293

22.1.2  javassist框架的使用295

22.1.3  序列化与反序列化中的方法296

22.1.4  ThreadLocal302

22.1.5  存储过程305

22.1.6  Statement及其子接口306

22.2  主键自增功能308

22.2.1  主键自增的配置与生效308

22.2.2  Jdbc3KeyGenerator类310

22.2.3  SelectKeyGenerator类312

22.3  懒加载功能316

22.3.1  懒加载功能的使用316

22.3.2  懒加载功能的实现318

22.3.3  懒加载功能对序列化和反序列化的支持325

22.4  语句处理功能329

22.4.1  MyBatis对多语句类型的支持329

22.4.2  MyBatis的语句处理功能331

22.5  参数处理功能333

22.6  结果处理功能334

22.7  结果集处理功能336

22.7.1  MyBatis中多结果集的处理337

22.7.2  结果集封装类340

22.7.3  结果集处理器341

22.8  执行器347

22.8.1  执行器接口348

22.8.2  执行器基类与实现类348

22.9  错误上下文352

23章  session包355

23.1  SqlSession及其相关类355

23.1.1  SqlSession的生成链356

23.1.2  DefaultSqlSession类357

23.1.3  SqlSessionManager类358

23.2  Configuration类361

23.3  其他类364

24章  plugin包366

24.1  责任链模式366

24.2  MyBatis插件开发368

24.3  MyBatis拦截器平台370

24.4  MyBatis拦截器链与拦截点373

5篇  总结与展望

25章  源码阅读总结378

25.1  前期准备378

25.1.1  工具准备378

25.1.2  项目选择378

25.1.3  项目使用379

25.2  项目初探379

25.3  源码阅读380

25.3.1  模块分析380

25.3.2  模块归类380

25.3.3  自底向上380

25.3.4  合理猜测381

25.3.5  类比阅读381

25.3.6  善于汇总381

25.3.7  网格阅读382

26章  优秀开源项目推荐383

26.1  Guava383

26.2  Tomcat384

26.3  Redis384

26.4  Dubbo385

26.5  React3851篇  背景介绍

1章  源码阅读2

1.1  源码阅读的意义2

1.2  源码阅读的方法2

1.3  开源软件3

1.4  MyBatis源码4

1.5  本书结构5

1.5.1  背景知识5

1.5.2  文件的指代5

1.5.3  方法的指代8

2章  MyBatis概述10

2.1  背景介绍10

2.1.1  传统数据库连接10

2.1.2  ORM框架11

2.1.3  MyBatis的特点12

2.2  快速上手12

2.2.1  MyBatis包的引入14

2.2.2  MyBatis的简单配置15

2.2.3  基于MyBatis的数据库作16

2.3  MyBatis的核心功能分析17

3章  MyBatis运行初探20

3.1  初始化阶段追踪23

3.1.1  静态代码块的执行23

3.1.2  获取InputStream24

3.1.3  配置信息读取25

3.1.4  总结27

3.2  数据读写阶段追踪27

3.2.1  获得SqlSession27

3.2.2  映接口文件与映文件的绑定28

3.2.3  映接口的代理28

3.2.4  SQL语句的查找31

3.2.5  查询结果缓存31

3.2.6  数据库查询33

3.2.7  处理结果集36

3.2.8  总结39

4章  MyBatis源码结构概述40

4.1  包结构40

4.2  分组结构40

2篇  基础功能包源码阅读

5章  eceptions包44

5.1  背景知识44

5.1.1  Java的异常44

5.1.2  序列化与反序列化45

5.2  Eception类46

5.3  EceptionFactory类47

6章  reflection包48

6.1  背景知识48

6.1.1  装饰器模式48

6.1.2  反50

6.1.3  Type接口及其子类54

6.2  对象工厂子包55

6.3  执行器子包57

6.4  属性子包59

6.5  对象包装器子包61

6.6  反核心类62

6.7  反包装类65

6.8  异常拆包工具65

6.9  参数名解析器68

6.10  泛型解析器69

7章  antations包与lang包76

7.1  Java注解详解76

7.2  Param注解分析78

8章  type包81

8.1  模板模式82

8.2  类型处理器83

8.2.1  类型处理器的基类与实现类83

8.2.2  TypeReference类85

8.3  类型注册表86

9章  io包89

9.1  背景知识89

9.1.1  单例模式89

9.1.2  代理模式89

9.1.3  静态代理90

9.1.4  VFS92

9.2  VFS实现类92

9.2.1  DefaultVFS类94

9.2.2  JBoss6VFS类94

9.3  类文件的加载96

9.4  ResolverUtil类97

10章  logging包100

10.1  背景知识100

10.1.1  适配器模式100

10.1.2  日志框架与日志级别102

10.1.3  基于反的动态代理103

10.2  Log接口105

10.3  Log接口的实现类107

10.4  LogFactory108

10.5  JDBC日志打印109

11章  parsing包113

11.1  背景知识113

11.1.1  XML文件113

11.1.2  XPath115

11.2  XML解析116

11.3  文档解析中的变量替换118

3篇  配置解析包源码阅读

12章  配置解析概述124

13章  binding包128

13.1  数据库作的接入128

13.1.1  数据库作的方法化129

13.1.2  数据库作方法的接入133

13.2  抽象方法与数据库作节点的关联134

13.3  数据库作接入总结136

13.3.1  初始化阶段136

13.3.2  数据读写阶段137

13.4  MyBatis与Spring、Spring Boot的整合137

14章  builder包139

14.1  建造者模式139

14.2  建造者基类与工具类142

14.3  SqlSourceBuilder类与StaticSqlSource类143

14.4  CacheRefResolver类和ResultMapResolver类145

14.4.1  CacheRefResolver类145

14.4.2  ResultMapResolver类146

14.5  ParameterEpression类148

14.6  XML文件解析149

14.6.1  XML文件的声明解析150

14.6.2  配置文件解析151

14.6.3  数据库作语句解析153

14.6.4  Statement解析155

14.6.5  引用解析157

14.7  注解映的解析159

14.7.1  注解映的使用159

14.7.2  注解映解析的触发160

14.7.3  直接注解映的解析164

14.7.4  间接注解映的解析164

15章  mapping包169

15.1  SQL语句处理功能169

15.1.1  MappedStatement类169

15.1.2  SqlSource类170

15.1.3  BoundSql171

15.2  输出结果处理功能171

15.2.1  ResultMap类172

15.2.2  ResultMapping类173

15.2.3  Discriminator174

15.3  输入参数处理功能176

15.4  多数据库种类处理功能176

15.5  其他功能178

16章  scripting包179

16.1  OGNL179

16.2  语言驱动接口及语言驱动注册表183

16.3  SQL节点树的组建186

16.4  SQL节点树的解析189

16.4.1  OGNL辅助类189

16.4.2  表达式求值器193

16.4.3  动态上下文194

16.4.4  SQL节点及其解析196

16.5  再论SqlSource202

16.5.1  SqlSource的生成202

16.5.2  DynamicSqlSource的转化205

16.5.3  RawSqlSource的转化206

16.5.4  SqlSource接口的实现类总结207

17章  datasource包208

17.1  背景知识208

17.1.1  java.sql包和java.sql包208

17.1.2  DriverManager209

17.1.3  DataSource209

17.1.4  Connection210

17.1.5  Statement211

17.2  数据源工厂接口211

17.3  JNDI数据源工厂213

17.4  非池化数据源及工厂214

17.4.1  非池化数据源工厂214

17.4.2  非池化数据源216

17.5  池化数据源218

17.5.1  池化数据源类的属性218

17.5.2  池化连接的给出与收回220

17.5.3  池化连接228

17.6  论数据源工厂229

4篇  核心作包源码阅读

18章  jdbc包232

18.1  AbstractSQL类与SQL类232

18.1.1  SafeAppendable内部类232

18.1.2  SQLStatement内部类233

18.1.3  AbstractSQL类235

18.1.4  SQL类236

18.2  SqlRunner类237

18.3  ScriptRunner类240

18.4  jdbc包的独立性241

19章  cache包243

19.1  背景知识243

19.1.1  Java对象的引用级别243

19.1.2  ReferenceQueue类244

19.2  cache包结构与Cache接口247

19.3  缓存键248

19.3.1  缓存键的原理248

19.3.2  缓存键的生成251

19.4  缓存的实现类252

19.5  缓存装饰器252

19.5.1  同步装饰器253

19.5.2  日志装饰器253

19.5.3  清理装饰器254

19.5.4  阻塞装饰器259

19.5.5  定时清理装饰器262

19.5.6  序列化装饰器263

19.6  缓存的组建264

19.7  事务缓存267

19.8  MyBatis缓存机制271

19.8.1  一级缓存271

19.8.2  二级缓存274

19.8.3  两级缓存机制277

20章  transaction包279

20.1  事务概述279

20.2  事务接口及工厂280

20.3  JDBC事务282

20.4  容器事务283

21章  cursor包284

21.1  Iterable接口与Iterator接口284

21.2  MyBatis中游标的使用285

21.3  游标接口285

21.4  默认游标286

21.4.1  CursorStatus内部类287

21.4.2  ObjectWrapperResultHandler内部类287

21.4.3  CursorIterator内部类288

21.4.4  DefaultCursor外部类289

22章  eecutor包293

22.1  背景知识293

22.1.1  基于cglib的动态代理293

22.1.2  javassist框架的使用295

22.1.3  序列化与反序列化中的方法296

22.1.4  ThreadLocal302

22.1.5  存储过程305

22.1.6  Statement及其子接口306

22.2  主键自增功能308

22.2.1  主键自增的配置与生效308

22.2.2  Jdbc3KeyGenerator类310

22.2.3  SelectKeyGenerator类312

22.3  懒加载功能316

22.3.1  懒加载功能的使用316

22.3.2  懒加载功能的实现318

22.3.3  懒加载功能对序列化和反序列化的支持325

22.4  语句处理功能329

22.4.1  MyBatis对多语句类型的支持329

22.4.2  MyBatis的语句处理功能331

22.5  参数处理功能333

22.6  结果处理功能334

22.7  结果集处理功能336

22.7.1  MyBatis中多结果集的处理337

22.7.2  结果集封装类340

22.7.3  结果集处理器341

22.8  执行器347

22.8.1  执行器接口348

22.8.2  执行器基类与实现类348

22.9  错误上下文352

23章  session包355

23.1  SqlSession及其相关类355

23.1.1  SqlSession的生成链356

23.1.2  DefaultSqlSession类357

23.1.3  SqlSessionManager类358

23.2  Configuration类361

23.3  其他类364

24章  plugin包366

24.1  责任链模式366

24.2  MyBatis插件开发368

24.3  MyBatis拦截器平台370

24.4  MyBatis拦截器链与拦截点373

5篇  总结与展望

25章  源码阅读总结378

25.1  前期准备378

25.1.1  工具准备378

25.1.2  项目选择378

25.1.3  项目使用379

25.2  项目初探379

25.3  源码阅读380

25.3.1  模块分析380

25.3.2  模块归类380

25.3.3  自底向上380

25.3.4  合理猜测381

25.3.5  类比阅读381

25.3.6  善于汇总381

25.3.7  网格阅读382

26章  优秀开源项目推荐383

26.1  Guava383

26.2  Tomcat384

26.3  Redis384

26.4  Dubbo385

26.5  React385


店铺

客服

购物车
领取优惠
立即购买