注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)通用源碼閱讀指導(dǎo)書(shū):MyBatis源碼詳解

通用源碼閱讀指導(dǎo)書(shū):MyBatis源碼詳解

通用源碼閱讀指導(dǎo)書(shū):MyBatis源碼詳解

定 價(jià):¥100.00

作 者: 易哥 著
出版社: 電子工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

購(gòu)買(mǎi)這本書(shū)可以去


ISBN: 9787121391460 出版時(shí)間: 2020-07-01 包裝: 平裝
開(kāi)本: 16開(kāi) 頁(yè)數(shù): 400 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  本書(shū)以開(kāi)源軟件MyBatis的源碼為例,講述程序源碼閱讀的流程、方法、技巧。本書(shū)先介紹MyBatis的發(fā)展背景與使用方法讓讀者對(duì)MyBatis建立概括性的認(rèn)識(shí),繼而逐步深入剖析MyBatis的源碼。并在剖析MyBatis源碼的過(guò)程講述源碼中所涉及到的編程語(yǔ)言知識(shí)、設(shè)計(jì)模式、架構(gòu)技巧。最終使得讀者在詳細(xì)了解MyBatis源碼的同時(shí)掌握源碼閱讀的基本能力。

作者簡(jiǎn)介

  易哥,畢業(yè)于浙江大學(xué)、山東大學(xué),高級(jí)軟件系統(tǒng)架構(gòu)師、網(wǎng)絡(luò)工程師、數(shù)據(jù)庫(kù)工程師、軟件測(cè)試工程師、注冊(cè)電氣工程師。在校成績(jī)前1%,獲得國(guó)家獎(jiǎng)學(xué)金兩次,一等獎(jiǎng)學(xué)金四次,科技創(chuàng)新大賽一等獎(jiǎng)三次,以及五四青年科學(xué)獎(jiǎng)等。主要科研方向?yàn)闄C(jī)器學(xué)習(xí)、分布式算法、容錯(cuò)算法在無(wú)線傳感網(wǎng)絡(luò)中的應(yīng)用,相關(guān)論文獲得IEEE通信協(xié)會(huì)最佳論文獎(jiǎng)。曾擔(dān)任網(wǎng)站技術(shù)部門(mén)負(fù)責(zé)人,具有豐富的互聯(lián)網(wǎng)開(kāi)發(fā)經(jīng)驗(yàn)。先后設(shè)計(jì)和實(shí)現(xiàn)了眾多系統(tǒng)和平臺(tái),也是活躍的開(kāi)源開(kāi)發(fā)者?,F(xiàn)專(zhuān)注軟件系統(tǒng)架構(gòu)設(shè)計(jì)與后端開(kāi)發(fā),著有書(shū)籍《通用源碼閱讀指導(dǎo)書(shū)》《高性能架構(gòu)之道》等。

圖書(shū)目錄

第1篇 背景介紹
第1章 源碼閱讀 2
1.1 源碼閱讀的意義 2
1.2 源碼閱讀的方法 2
1.3 開(kāi)源軟件 3
1.4 MyBatis源碼 4
1.5 本書(shū)結(jié)構(gòu) 5
1.5.1 背景知識(shí) 5
1.5.2 文件的指代 5
1.5.3 方法的指代 8
第2章 MyBatis概述 10
2.1 背景介紹 10
2.1.1 傳統(tǒng)數(shù)據(jù)庫(kù)連接 10
2.1.2 ORM框架 11
2.1.3 MyBatis的特點(diǎn) 12
2.2 快速上手 12
2.2.1 MyBatis包的引入 14
2.2.2 MyBatis的簡(jiǎn)單配置 15
2.2.3 基于MyBatis的數(shù)據(jù)庫(kù)操作 16
2.3 MyBatis的核心功能分析 17
第3章 MyBatis運(yùn)行初探 20
3.1 初始化階段追蹤 23
3.1.1 靜態(tài)代碼塊的執(zhí)行 23
3.1.2 獲取InputStream 24
3.1.3 配置信息讀取 25
3.1.4 總結(jié) 27
3.2 數(shù)據(jù)讀寫(xiě)階段追蹤 27
3.2.1 獲得SqlSession 27
3.2.2 映射接口文件與映射文件的綁定 28
3.2.3 映射接口的代理 28
3.2.4 SQL語(yǔ)句的查找 31
3.2.5 查詢(xún)結(jié)果緩存 31
3.2.6 數(shù)據(jù)庫(kù)查詢(xún) 33
3.2.7 處理結(jié)果集 36
3.2.8 總結(jié) 39
第4章 MyBatis源碼結(jié)構(gòu)概述 40
4.1 包結(jié)構(gòu) 40
4.2 分組結(jié)構(gòu) 40
第2篇 基礎(chǔ)功能包源碼閱讀
第5章 exceptions包 44
5.1 背景知識(shí) 44
5.1.1 Java的異常 44
5.1.2 序列化與反序列化 45
5.2 Exception類(lèi) 46
5.3 ExceptionFactory類(lèi) 47
第6章 reflection包 48
6.1 背景知識(shí) 48
6.1.1 裝飾器模式 48
6.1.2 反射 50
6.1.3 Type接口及其子類(lèi) 54
6.2 對(duì)象工廠子包 55
6.3 執(zhí)行器子包 57
6.4 屬性子包 59
6.5 對(duì)象包裝器子包 61
6.6 反射核心類(lèi) 62
6.7 反射包裝類(lèi) 65
6.8 異常拆包工具 65
6.9 參數(shù)名解析器 68
6.10 泛型解析器 69
第7章 annotations包與lang包 76
7.1 Java注解詳解 76
7.2 Param注解分析 78
第8章 type包 81
8.1 模板模式 82
8.2 類(lèi)型處理器 83
8.2.1 類(lèi)型處理器的基類(lèi)與實(shí)現(xiàn)類(lèi) 83
8.2.2 TypeReference類(lèi) 85
8.3 類(lèi)型注冊(cè)表 86
第9章 io包 89
9.1 背景知識(shí) 89
9.1.1 單例模式 89
9.1.2 代理模式 89
9.1.3 靜態(tài)代理 90
9.1.4 VFS 92
9.2 VFS實(shí)現(xiàn)類(lèi) 92
9.2.1 DefaultVFS類(lèi) 94
9.2.2 JBoss6VFS類(lèi) 94
9.3 類(lèi)文件的加載 96
9.4 ResolverUtil類(lèi) 97
第10章 logging包 100
10.1 背景知識(shí) 100
10.1.1 適配器模式 100
10.1.2 日志框架與日志級(jí)別 102
10.1.3 基于反射的動(dòng)態(tài)代理 103
10.2 Log接口 105
10.3 Log接口的實(shí)現(xiàn)類(lèi) 107
10.4 LogFactory 108
10.5 JDBC日志打印 109
第11章 parsing包 113
11.1 背景知識(shí) 113
11.1.1 XML文件 113
11.1.2 XPath 115
11.2 XML解析 116
11.3 文檔解析中的變量替換 118
第3篇 配置解析包源碼閱讀
第12章 配置解析概述 124
第13章 binding包 128
13.1 數(shù)據(jù)庫(kù)操作的接入 128
13.1.1 數(shù)據(jù)庫(kù)操作的方法化 129
13.1.2 數(shù)據(jù)庫(kù)操作方法的接入 133
13.2 抽象方法與數(shù)據(jù)庫(kù)操作節(jié)點(diǎn)的關(guān)聯(lián) 134
13.3 數(shù)據(jù)庫(kù)操作接入總結(jié) 136
13.3.1 初始化階段 136
13.3.2 數(shù)據(jù)讀寫(xiě)階段 137
13.4 MyBatis與Spring、Spring Boot的整合 137
第14章 builder包 139
14.1 建造者模式 139
14.2 建造者基類(lèi)與工具類(lèi) 142
14.3 SqlSourceBuilder類(lèi)與StaticSqlSource類(lèi) 143
14.4 CacheRefResolver類(lèi)和ResultMapResolver類(lèi) 145
14.4.1 CacheRefResolver類(lèi) 145
14.4.2 ResultMapResolver類(lèi) 146
14.5 ParameterExpression類(lèi) 148
14.6 XML文件解析 149
14.6.1 XML文件的聲明解析 150
14.6.2 配置文件解析 151
14.6.3 數(shù)據(jù)庫(kù)操作語(yǔ)句解析 153
14.6.4 Statement解析 155
14.6.5 引用解析 157
14.7 注解映射的解析 159
14.7.1 注解映射的使用 159
14.7.2 注解映射解析的觸發(fā) 160
14.7.3 直接注解映射的解析 164
14.7.4 間接注解映射的解析 164
第15章 mapping包 169
15.1 SQL語(yǔ)句處理功能 169
15.1.1 MappedStatement類(lèi) 169
15.1.2 SqlSource類(lèi) 170
15.1.3 BoundSql 171
15.2 輸出結(jié)果處理功能 171
15.2.1 ResultMap類(lèi) 172
15.2.2 ResultMapping類(lèi) 173
15.2.3 Discriminator 174
15.3 輸入?yún)?shù)處理功能 176
15.4 多數(shù)據(jù)庫(kù)種類(lèi)處理功能 176
15.5 其他功能 178
第16章 scripting包 179
16.1 OGNL 179
16.2 語(yǔ)言驅(qū)動(dòng)接口及語(yǔ)言驅(qū)動(dòng)注冊(cè)表 183
16.3 SQL節(jié)點(diǎn)樹(shù)的組建 186
16.4 SQL節(jié)點(diǎn)樹(shù)的解析 189
16.4.1 OGNL輔助類(lèi) 189
16.4.2 表達(dá)式求值器 193
16.4.3 動(dòng)態(tài)上下文 194
16.4.4 SQL節(jié)點(diǎn)及其解析 196
16.5 再論SqlSource 202
16.5.1 SqlSource的生成 202
16.5.2 DynamicSqlSource的轉(zhuǎn)化 205
16.5.3 RawSqlSource的轉(zhuǎn)化 206
16.5.4 SqlSource接口的實(shí)現(xiàn)類(lèi)總結(jié) 207
第17章 datasource包 208
17.1 背景知識(shí) 208
17.1.1 java.sql包和javax.sql包 208
17.1.2 DriverManager 209
17.1.3 DataSource 209
17.1.4 Connection 210
17.1.5 Statement 211
17.2 數(shù)據(jù)源工廠接口 211
17.3 JNDI數(shù)據(jù)源工廠 213
17.4 非池化數(shù)據(jù)源及工廠 214
17.4.1 非池化數(shù)據(jù)源工廠 214
17.4.2 非池化數(shù)據(jù)源 216
17.5 池化數(shù)據(jù)源 218
17.5.1 池化數(shù)據(jù)源類(lèi)的屬性 218
17.5.2 池化連接的給出與收回 220
17.5.3 池化連接 228
17.6 論數(shù)據(jù)源工廠 229
第4篇 核心操作包源碼閱讀
第18章 jdbc包 232
18.1 AbstractSQL類(lèi)與SQL類(lèi) 232
18.1.1 SafeAppendable內(nèi)部類(lèi) 232
18.1.2 SQLStatement內(nèi)部類(lèi) 233
18.1.3 AbstractSQL類(lèi) 235
18.1.4 SQL類(lèi) 236
18.2 SqlRunner類(lèi) 237
18.3 ScriptRunner類(lèi) 240
18.4 jdbc包的獨(dú)立性 241
第19章 cache包 243
19.1 背景知識(shí) 243
19.1.1 Java對(duì)象的引用級(jí)別 243
19.1.2 ReferenceQueue類(lèi) 244
19.2 cache包結(jié)構(gòu)與Cache接口 247
19.3 緩存鍵 248
19.3.1 緩存鍵的原理 248
19.3.2 緩存鍵的生成 251
19.4 緩存的實(shí)現(xiàn)類(lèi) 252
19.5 緩存裝飾器 252
19.5.1 同步裝飾器 253
19.5.2 日志裝飾器 253
19.5.3 清理裝飾器 254
19.5.4 阻塞裝飾器 259
19.5.5 定時(shí)清理裝飾器 262
19.5.6 序列化裝飾器 263
19.6 緩存的組建 264
19.7 事務(wù)緩存 267
19.8 MyBatis緩存機(jī)制 271
19.8.1 一級(jí)緩存 271
19.8.2 二級(jí)緩存 274
19.8.3 兩級(jí)緩存機(jī)制 277
第20章 transaction包 279
20.1 事務(wù)概述 279
20.2 事務(wù)接口及工廠 280
20.3 JDBC事務(wù) 282
20.4 容器事務(wù) 283
第21章 cursor包 284
21.1 Iterable接口與Iterator接口 284
21.2 MyBatis中游標(biāo)的使用 285
21.3 游標(biāo)接口 285
21.4 默認(rèn)游標(biāo) 286
21.4.1 CursorStatus內(nèi)部類(lèi) 287
21.4.2 ObjectWrapperResultHandler內(nèi)部類(lèi) 287
21.4.3 CursorIterator內(nèi)部類(lèi) 288
21.4.4 DefaultCursor外部類(lèi) 289
第22章 executor包 293
22.1 背景知識(shí) 293
22.1.1 基于cglib的動(dòng)態(tài)代理 293
22.1.2 javassist框架的使用 295
22.1.3 序列化與反序列化中的方法 296
22.1.4 ThreadLocal 302
22.1.5 存儲(chǔ)過(guò)程 305
22.1.6 Statement及其子接口 306
22.2 主鍵自增功能 308
22.2.1 主鍵自增的配置與生效 308
22.2.2 Jdbc3KeyGenerator類(lèi) 310
22.2.3 SelectKeyGenerator類(lèi) 312
22.3 懶加載功能 316
22.3.1 懶加載功能的使用 316
22.3.2 懶加載功能的實(shí)現(xiàn) 318
22.3.3 懶加載功能對(duì)序列化和反序列化的支持 325
22.4 語(yǔ)句處理功能 329
22.4.1 MyBatis對(duì)多語(yǔ)句類(lèi)型的支持 329
22.4.2 MyBatis的語(yǔ)句處理功能 331
22.5 參數(shù)處理功能 333
22.6 結(jié)果處理功能 334
22.7 結(jié)果集處理功能 336
22.7.1 MyBatis中多結(jié)果集的處理 337
22.7.2 結(jié)果集封裝類(lèi) 340
22.7.3 結(jié)果集處理器 341
22.8 執(zhí)行器 347
22.8.1 執(zhí)行器接口 348
22.8.2 執(zhí)行器基類(lèi)與實(shí)現(xiàn)類(lèi) 348
22.9 錯(cuò)誤上下文 352
第23章 session包 355
23.1 SqlSession及其相關(guān)類(lèi) 355
23.1.1 SqlSession的生成鏈 356
23.1.2 DefaultSqlSession類(lèi) 357
23.1.3 SqlSessionManager類(lèi) 358
23.2 Configuration類(lèi) 361
23.3 其他類(lèi) 364
第24章 plugin包 366
24.1 責(zé)任鏈模式 366
24.2 MyBatis插件開(kāi)發(fā) 368
24.3 MyBatis攔截器平臺(tái) 370
24.4 MyBatis攔截器鏈與攔截點(diǎn) 373
第5篇 總結(jié)與展望
第25章 源碼閱讀總結(jié) 378
25.1 前期準(zhǔn)備 378
25.1.1 工具準(zhǔn)備 378
25.1.2 項(xiàng)目選擇 378
25.1.3 項(xiàng)目使用 379
25.2 項(xiàng)目初探 379
25.3 源碼閱讀 380
25.3.1 模塊分析 380
25.3.2 模塊歸類(lèi) 380
25.3.3 自底向上 380
25.3.4 合理猜測(cè) 381
25.3.5 類(lèi)比閱讀 381
25.3.6 善于匯總 381
25.3.7 網(wǎng)格閱讀 382
第26章 優(yōu)秀開(kāi)源項(xiàng)目推薦 383
26.1 Guava 383
26.2 Tomcat 384
26.3 Redis 384
26.4 Dubbo 385
26.5 React 385

本目錄推薦

掃描二維碼
Copyright ? 讀書(shū)網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)