本書基于MyBatis的核心邏輯,通過實現簡單版MyBatis的方式,對MyBatis進行分析、設計和實踐。本書以實踐為核心,摒棄MyBatis源碼中繁雜的內容,聚焦于MyBaits中的核心邏輯,簡化代碼實現過程,以漸進式的開發(fā)方式,逐步實現MyBaits中的核心功能。從解析、綁定、反射、緩存,到會話和事務操作,再到如何與Spring、Spring Boot進行關聯(lián)注冊Bean對象,達到整合部分功能的目的。讀者可以把此次學習當作開發(fā)一個項目,由此可以看到MyBatis從無到有,再到完善和整合的全過程。 本書既可以作為計算機相關行業(yè)研發(fā)人員的輔導書,也可以作為高等院校計算機專業(yè)學生的參考書。無論是初學者,還是中級和高級研發(fā)人員,都能從本書中獲得啟發(fā)。
付政委(小傅哥)作為一名一線互聯(lián)網Java工程師、架構師,曾開發(fā)過交易、營銷類項目,運營、活動類項目,設計過中間件,組織過系統(tǒng)重構,編寫過技術專利。他不僅從事業(yè)務系統(tǒng)的開發(fā)工作,也經常做一些字節(jié)碼插樁類的設計和實現,對架構的設計和落地具有豐富的經驗。他既熱衷于Java語言,也喜歡研究中繼器、I/O板卡、C#和PHP,是一名活躍的技術“折騰者”。常逛GitHub,樂于分享技術文章。沉淀、分享、成長,讓自己和他人都能有所收獲!
引言 / 1
第1章 實現一個簡單的ORM框架 / 6
1.1 ORM框架實現的說明 / 6
1.2 簡單ORM框架的設計 / 7
1.3 簡單ORM框架的實現 / 7
1.4 ORM框架的功能測試 / 15
1.5 總結 / 18
第2章 創(chuàng)建簡單的映射器代理工廠 / 19
2.1 ORM框架的執(zhí)行過程 / 19
2.2 映射器代理的設計 / 20
2.3 映射器代理的實現 / 20
2.4 DAO接口代理的測試 / 23
2.5 總結 / 24
第3章 映射器的注冊和使用 / 25
3.1 會話模型的思考 / 25
3.2 會話模型的設計 / 26
3.3 會話模型的實現 / 27
3.4 會話模型的測試 / 32
3.5 總結 / 33
第4章 XML的解析和注冊 / 34
4.1 ORM框架的核心流程 / 34
4.2 XML操作的設計 / 35
4.3 XML操作的實現 / 36
4.4 XML配置的測試 / 41
4.5 總結 / 42
第5章 數據源的創(chuàng)建和使用 / 43
5.1 執(zhí)行SQL語句的介紹 / 43
5.2 數據源解析的設計 / 44
5.3 數據源解析的實現 / 44
5.4 數據源使用的測試 / 53
5.5 總結 / 55
第6章 數據源池化技術的實現 / 56
6.1 池化技術的思考 / 56
6.2 池化技術的設計 / 56
6.3 池化技術的實現 / 57
6.4 數據源使用的測試 / 67
6.5 總結 / 72
第7章 SQL執(zhí)行器的定義和實現 / 73
7.1 會話執(zhí)行SQL的分析 / 73
7.2 執(zhí)行器模塊的設計 / 74
7.3 執(zhí)行器模塊的實現 / 75
7.4 功能流程的測試 / 84
7.5 總結 / 86
第8 章 元對象反射工具包 / 87
8.1 反射工具包的用途 / 87
8.2 反射工具包的設計 / 88
8.3 反射工具包的實現 / 89
8.4 反射工具包的測試 / 99
8.5 總結 / 103
第9 章 細化XML 語句構建器 / 104
9.1 XML 解析過度耦合 / 104
9.2 XML 語句解析的設計 / 105
9.3 XML 語句解析的實現 / 107
9.4 XML 語句解析的測試 / 116
9.5 總結 / 118
第10 章 封裝參數設置處理器 / 119
10.1 參數處理的分析 / 119
10.2 參數處理的設計 / 120
10.3 參數處理的實現 / 122
10.4 參數功能的測試 / 131
10.5 總結 / 135
第11 章 封裝結果集處理器 / 136
11.1 參數處理的分析 / 136
11.2 參數處理的設計 / 137
11.3 參數處理的實現 / 139
11.4 功能流程的測試 / 148
11.5 總結 / 150
第12 章 完善框架的增、刪、改、查操作 / 151
12.1 會話功能的分析 / 151
12.2 會話功能的設計 / 152
12.3 會話功能的實現 / 154
12.4 會話功能的測試 / 164
12.5 總結 / 169
第13 章 通過注解配置執(zhí)行SQL語句 / 170
13.1 注解配置的思考 / 170
13.2 注解配置的設計 / 171
13.3 注解配置的實現 / 173
13.4 注解配置的測試 / 181
13.5 總結 / 186
第14 章 ResultMap 映射參數的配置 / 187
14.1 字段映射配置的分析 / 187
14.2 字段映射配置的設計 / 188
14.3 字段映射配置的實現 / 190
14.4 字段映射配置的測試 / 199
14.5 總結 / 203
第15 章 返回insert 操作自增索引值 / 204
15.1 分析兩條SQL 語句 / 204
15.2 獲取自增索引的設計 / 205
15.3 獲取自增索引的實現 / 206
15.4 獲取自增索引的測試 / 214
15.5 總結 / 216
第16 章 解析動態(tài)SQL 語句 / 218
16.1 動態(tài)SQL 語句的使用場景 / 218
16.2 解析動態(tài)SQL 語句的設計 / 219
16.3 解析動態(tài)SQL 語句的實現 / 220
16.4 解析動態(tài)SQL 語句的測試 / 228
16.5 總結 / 230
第17 章 插件功能 / 232
17.1 插件功能的分析 / 232
17.2 插件功能的設計 / 233
17.3 插件功能的實現 / 233
17.4 插件功能的測試 / 242
17.5 總結 / 244
第18 章 一級緩存 / 246
18.1 緩存使用的思考 / 246
18.2 一級緩存的設計 / 246
18.3 一級緩存的實現 / 248
18.4 一級緩存的測試 / 259
18.5 總結 / 263
第19 章 二級緩存 / 265
19.1 二級緩存的思考 / 265
19.2 二級緩存的設計 / 266
19.3 二級緩存的實現 / 267
19.4 二級緩存的測試 / 277
19.5 總結 / 281
第20 章 整合Spring / 282
20.1 框架整合的介紹 / 282
20.2 框架整合的設計 / 282
20.3 框架整合的實現 / 283
20.4 框架整合的測試 / 287
20.5 總結 / 291
第21 章 整合Spring Boot / 292
21.1 組件整合的介紹 / 292
21.2 組件整合的設計 / 292
21.3 組件整合的實現 / 293
21.4 組件整合的測試 / 299
21.5 總結 / 302
第22 章 設計模式總結 / 303
22.1 類型:創(chuàng)建型模式 / 303
22.2 類型:結構型模式 / 308
22.3 類型:行為型模式 / 315
22.4 總結 / 320