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
发货方式
自动:在特色服务中标有自动发货的商品,拍下后,源码类 软件类 商品会在订单详情页显示来自卖家的商品下载链接,点卡类 商品会在订单详情直接显示卡号密码。
手动:未标有自动发货的的商品,付款后,商品卖家会收到平台的手机短信、邮件提醒,卖家会尽快为您发货,如卖家长时间未发货,买家也可通过订单上的QQ或电话主动联系卖家。
退款说明
1、源码类:商品详情(含标题)与实际源码不一致的(例:描述PHP实际为ASP、描述的功能实际缺少、功能不能正常使用等)!有演示站时,与实际源码不一致的(但描述中有"不保证完全一样、可能有少许偏差"类似显著公告的除外);
2、营销推广类:未达到卖家描述标准的;
3、点卡软件类:所售点卡软件无法使用的;
3、发货:手动发货商品,在卖家未发货前就申请了退款的;
4、服务:卖家不提供承诺的售后服务的;(双方提前有商定和描述中有显著声明的除外)
5、其他:如商品或服务有质量方面的硬性常规问题的。未符合详情及卖家承诺的。
注:符合上述任一情况的,均支持退款,但卖家予以积极解决问题则除外。交易中的商品,卖家无法修改描述!
注意事项
1、在付款前,双方在QQ上所商定的内容,也是纠纷评判依据(商定与商品描述冲突时,以商定为准);
2、源码商品,同时有网站演示与商品详情图片演示,且网站演示与商品详情图片演示不一致的,默认按商品详情图片演示作为纠纷评判依据(卖家有特别声明或有额外商定的除外);
3、点卡软件商品,默认按商品详情作为纠纷评判依据(特别声明或有商定除外);
4、营销推广商品,默认按商品详情作为纠纷评判依据(特别声明或有商定除外);
5、在有"正当退款原因和依据"的前提下,写有"一旦售出,概不支持退款"等类似的声明,视为无效声明;
6、虽然交易产生纠纷的几率很小,卖家也肯定会给买家最完善的服务!但请买卖双方尽量保留如聊天记录这样的重要信息,以防产生纠纷时便于送码网快速介入处理。
送码声明
1、送码网作为第三方中介平台,依据双方交易合同(商品描述、交易前商定的内容)来保障交易的安全及买卖双方的权益;
2、非平台线上交易的项目,出现任何后果均与送码网无关;无论卖家以何理由要求线下交易的(如:要求买家支付宝转账付款的,微信转账付款的等),请联系管理举报,本平台将清退卖家处理。
正版 steam 原子之心 Atomic Heart 国区激活码 cd...
steam 英雄连3 国区激活码CDKEY PC游戏正版 Compan...
M,日朋礼送男友老公创意实人用星人际机器蓝牙音箱走心情节生礼...
zippo之宝官方正品打火机古银双面贴章机器人煤油机送男友礼物女...
秋季圆领卫衣套头男友风秋天长袖时尚潮流印花卡通机器派大星上衣...
机器猫情侣衬衫小叮当落肩短袖衬衣男友外套大码潮流套装上衣薄款...
PDPAOLA小机器人情侣手链女男生日礼物520送男友男士款闺蜜Rob...
兼容乐高复仇者联盟4战争机器积木人仔钢铁侠救援机甲玩具WM723...
兼容乐高复联4钢铁侠X0252灭霸MK50 MK1战争机器拼装积木人仔...
XBOX ONE SERIES X|S 中文 战争机器4与光环5守护...