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