劉增輝 著
適讀人群:Java開(kāi)發(fā)人員
1.資深Java開(kāi)發(fā)工程師執(zhí)筆
作者是資深Java開(kāi)發(fā)工程師,活躍于CSDN及開(kāi)源中國(guó),對(duì)MyBatis研究深入,是MyBatis官方推薦的分頁(yè)插件PageHelper即通用Mapper的作者。
2.示例完整,注釋詳細(xì)
《MyBatis從入門(mén)到精通》中的示例代碼都非常完整,同時(shí)每行核心語(yǔ)句都附有注釋?zhuān)梢詭椭x者輕松掌握代碼的內(nèi)容,快速入門(mén),持續(xù)深化,舉一反三。
2.解讀源碼,資源豐富
《MyBatis從入門(mén)到精通》的特點(diǎn)在于詳細(xì)解讀MyBatis源代碼,帶領(lǐng)大家深入理解源碼核心。另外,作者開(kāi)源了許多優(yōu)秀項(xiàng)目(MyBatis官方推薦的擴(kuò)展組件等),每一位讀者都可以獲得《MyBatis從入門(mén)到精通》的寶貴資源,并與作者交流討論。
《MyBatis從入門(mén)到精通》中從一個(gè)簡(jiǎn)單的MyBatis查詢(xún)?nèi)胧?,搭建起學(xué)習(xí)MyBatis的基礎(chǔ)開(kāi)發(fā)環(huán)境。通過(guò)全面的示例代碼和測(cè)試講解了在MyBatis XML方式和注解方式中進(jìn)行增、刪、改、查操作的基本用法,介紹了動(dòng)態(tài)SQL在不同方面的應(yīng)用以及在使用過(guò)程中的實(shí)踐方案。針對(duì)MyBatis高級(jí)映射、存儲(chǔ)過(guò)程和類(lèi)型處理器提供了豐富的示例,通過(guò)自下而上的方法使讀者更好地理解和掌握MyBatis的高級(jí)用法,同時(shí)針對(duì)MyBatis的代碼生成器提供了詳細(xì)的配置介紹。此外,《MyBatis從入門(mén)到精通》還提供了緩存配置、插件開(kāi)發(fā)、Spring、Spring Boot集成的詳細(xì)內(nèi)容。最后通過(guò)介紹Git和GitHub讓讀者了解MyBatis開(kāi)源項(xiàng)目,通過(guò)對(duì)MyBatis源碼和測(cè)試用例的講解讓讀者更好掌握MyBatis。
劉增輝,資深Java工程師,熱愛(ài)技術(shù)研究,樂(lè)于分享心得,活躍于CSDN和開(kāi)源中國(guó)網(wǎng)站。對(duì)MyBatis源碼有著深入研究,同時(shí)熱衷于開(kāi)源項(xiàng)目,在GitHub和開(kāi)源中國(guó)網(wǎng)站上發(fā)布了多個(gè)開(kāi)源項(xiàng)目,是MyBatis官方推薦的分頁(yè)插件PageHelper和通用Mapper的作者,所發(fā)布項(xiàng)目受到了數(shù)千人的關(guān)注。
第1章 MyBatis入門(mén) 1
1.1 MyBatis簡(jiǎn)介 2
1.2 創(chuàng)建Maven項(xiàng)目 3
1.3 簡(jiǎn)單配置讓MyBatis跑起來(lái) 7
1.3.1 準(zhǔn)備數(shù)據(jù)庫(kù) 8
1.3.2 配置MyBatis 8
1.3.3 創(chuàng)建實(shí)體類(lèi)和Mapper.xml文件 10
1.3.4 配置Log4j以便查看MyBatis操作數(shù)據(jù)庫(kù)的過(guò)程 11
1.3.5 編寫(xiě)測(cè)試代碼讓MyBatis跑起來(lái) 12
1.4 本章小結(jié) 14
第2章 MyBatis XML方式的基本用法 15
2.1 一個(gè)簡(jiǎn)單的權(quán)限控制需求 16
2.1.1 創(chuàng)建數(shù)據(jù)庫(kù)表 16
2.1.2 創(chuàng)建實(shí)體類(lèi) 19
2.2 使用XML方式 21
2.3 select用法 23
2.4 insert用法 35
2.4.1 簡(jiǎn)單的insert方法 35
2.4.2 使用JDBC方式返回主鍵自增的值 38
2.4.3 使用selectKey返回主鍵的值 40
2.5 update用法 42
2.6 delete用法 45
2.7 多個(gè)接口參數(shù)的用法 47
2.8 Mapper接口動(dòng)態(tài)代理實(shí)現(xiàn)原理 50
2.9 本章小結(jié) 51
第3章 MyBatis注解方式的基本用法 53
3.1 @Select注解 54
3.1.1 使用mapUnderscoreToCamelCase配置 55
3.1.2 使用resultMap方式 55
3.2 @Insert注解 58
3.2.1 不需要返回主鍵 58
3.2.2 返回自增主鍵 58
3.2.3 返回非自增主鍵 59
3.3 @Update注解和@Delete注解 59
3.4 Provider注解 60
3.5 本章小結(jié) 61
第4章 MyBatis動(dòng)態(tài)SQL 63
4.1 if用法 64
4.1.1 在WHERE條件中使用if 64
4.1.2 在UPDATE更新列中使用if 68
4.1.3 在INSERT動(dòng)態(tài)插入列中使用if 70
4.2 choose用法 72
4.3 where、set、trim用法 75
4.3.1 where用法 75
4.3.2 set用法 76
4.3.3 trim用法 77
4.4 foreach用法 78
4.4.1 foreach實(shí)現(xiàn)in集合 78
4.4.2 foreach實(shí)現(xiàn)批量插入 81
4.4.3 foreach實(shí)現(xiàn)動(dòng)態(tài)UPDATE 84
4.5 bind用法 86
4.6 多數(shù)據(jù)庫(kù)支持 86
4.7 OGNL用法 89
4.8 本章小結(jié) 90
第5章 Mybatis代碼生成器 91
5.1 XML配置詳解 92
5.1.1 property標(biāo)簽 95
5.1.2 plugin標(biāo)簽 96
5.1.3 commentGenerator標(biāo)簽 97
5.1.4 jdbcConnection標(biāo)簽 99
5.1.5 javaTypeResolver標(biāo)簽 100
5.1.6 javaModelGenerator標(biāo)簽 101
5.1.7 sqlMapGenerator標(biāo)簽 102
5.1.8 javaClientGenerator標(biāo)簽 103
5.1.9 table標(biāo)簽 104
5.2 一個(gè)配置參考示例 109
5.3 運(yùn)行MyBatis Generator 111
5.3.1 使用Java編寫(xiě)代碼運(yùn)行 111
5.3.2 從命令提示符運(yùn)行 113
5.3.3 使用Maven Plugin運(yùn)行 115
5.3.4 使用Eclipse插件運(yùn)行 117
5.4 Example介紹 119
5.5 本章小結(jié) 124
第6章 MyBatis高級(jí)查詢(xún) 125
6.1 高級(jí)結(jié)果映射 126
6.1.1 一對(duì)一映射 126
6.1.2 一對(duì)多映射 140
6.1.3 鑒別器映射 156
6.2 存儲(chǔ)過(guò)程 159
6.2.1 第一個(gè)存儲(chǔ)過(guò)程 162
6.2.2 第二個(gè)存儲(chǔ)過(guò)程 164
6.2.3 第三個(gè)和第四個(gè)存儲(chǔ)過(guò)程 166
6.2.4 在Oracle中使用游標(biāo)參數(shù)的存儲(chǔ)過(guò)程 168
6.3 使用枚舉或其他對(duì)象 170
6.3.1 使用MyBatis提供的枚舉處理器 170
6.3.2 使用自定義的類(lèi)型處理器 172
6.3.3 對(duì)Java 8日期(JSR-310)的支持 175
6.4 本章小結(jié) 176
第7章 MyBatis緩存配置 177
7.1 一級(jí)緩存 178
7.2 二級(jí)緩存 181
7.2.1 配置二級(jí)緩存 181
7.2.2 使用二級(jí)緩存 184
7.3 集成EhCache緩存 187
7.4 集成Redis緩存 190
7.5 臟數(shù)據(jù)的產(chǎn)生和避免 191
7.6 二級(jí)緩存適用場(chǎng)景 194
7.7 本章小結(jié) 194
第8章 MyBatis插件開(kāi)發(fā) 195
8.1 攔截器接口介紹 196
8.2 攔截器簽名介紹 198
8.2.1 Executor接口 198
8.2.2 ParameterHandler接口 200
8.2.3 ResultSetHandler接口 201
8.2.4 StatementHandler接口 202
8.3 下畫(huà)線(xiàn)鍵值轉(zhuǎn)小寫(xiě)駝峰形式插件 203
8.4 分頁(yè)插件 206
8.4.1 PageInterceptor攔截器類(lèi) 207
8.4.2 Dialect接口 212
8.4.3 MySqlDialect實(shí)現(xiàn) 216
8.5 本章小結(jié) 220
第9章 Spring集成MyBatis 221
9.1 創(chuàng)建基本的Maven Web項(xiàng)目 222
9.2 集成Spring和Spring MVC 227
9.3 集成MyBatis 232
9.4 幾個(gè)簡(jiǎn)單實(shí)例 234
9.4.1 基本準(zhǔn)備 235
9.4.2 開(kāi)發(fā)Mapper層(Dao層) 235
9.4.3 開(kāi)發(fā)業(yè)務(wù)層(Service層) 238
9.4.4 開(kāi)發(fā)控制層(Controller層) 240
9.4.5 開(kāi)發(fā)視圖層(View層) 242
9.4.6 部署和運(yùn)行應(yīng)用 245
9.5 本章小結(jié) 246
第10章 Spring Boot集成MyBatis 247
10.1 基本的Spring Boot項(xiàng)目 248
10.2 集成MyBatis 251
10.3 MyBatis Starter配置介紹 253
10.4 簡(jiǎn)單示例 255
10.4.1 引入simple依賴(lài) 255
10.4.2 開(kāi)發(fā)業(yè)務(wù)(Service)層 258
10.4.3 開(kāi)發(fā)控制(Controller)層 259
10.4.4 運(yùn)行應(yīng)用查看效果 259
10.5 本章小結(jié) 260
第11章 MyBatis開(kāi)源項(xiàng)目 261
11.1 Git入門(mén) 262
11.1.1 初次運(yùn)行配置 262
11.1.2 初始化和克隆倉(cāng)庫(kù) 263
11.1.3 本地操作 265
11.1.4 遠(yuǎn)程操作 267
11.2 GitHub入門(mén) 269
11.2.1 創(chuàng)建并提交到倉(cāng)庫(kù) 269
11.2.2 Fork倉(cāng)庫(kù)并克隆到本地 272
11.2.3 社交功能 275
11.3 MyBatis源碼講解 278
11.4 MyBatis測(cè)試用例 290
11.5 本章小結(jié) 293
附錄 類(lèi)型處理器(TypeHandler) 295
分離是為了更好的相聚
2013年,我在開(kāi)源中國(guó)網(wǎng)站上認(rèn)識(shí)了本書(shū)作者劉增輝,并和他多次探討過(guò)關(guān)于Java開(kāi)源框架的種種技術(shù)問(wèn)題。那段時(shí)間,我正在開(kāi)源一款名為SmartFramework的輕量級(jí)JavaWeb框架,當(dāng)時(shí)我不敢奢望自己開(kāi)源的框架會(huì)有多少人認(rèn)可,但沒(méi)想到后來(lái)還真有不少朋友們?yōu)榇丝蚣芴岢隽藢氋F建議并做出了巨大貢獻(xiàn)。尤其是在數(shù)據(jù)持久層這塊,增輝給了我許多支持與幫助,讓我感受到開(kāi)源帶給我的不僅是技術(shù)能力上的提升,更多的是讓自己感到快樂(lè)。
我了解到增輝對(duì)MyBatis的研究頗為深入,不僅對(duì)MyBatis的內(nèi)核,甚至對(duì)于其擴(kuò)展都能做到了然于心、游刃有余。他曾經(jīng)也開(kāi)源了許多MyBatis核心組件,幫助許多開(kāi)發(fā)者提高了工作效率,而我正是這眾多開(kāi)發(fā)者中的一位。
我不想占用這篇推薦序的寶貴篇幅為大家講解如何來(lái)使用MyBatis,因?yàn)檫@本書(shū)中對(duì)MyBatis的介紹遠(yuǎn)比我講的更加詳細(xì)和深入?,F(xiàn)在我只想和大家聊聊架構(gòu)設(shè)計(jì)中的一個(gè)核心問(wèn)題:關(guān)注點(diǎn)分離。因?yàn)檫@個(gè)問(wèn)題同樣也是MyBatis框架需要解決的核心問(wèn)題。
關(guān)注點(diǎn)分離
關(guān)注點(diǎn)分離所對(duì)應(yīng)的英文是SeparationofConcerns,簡(jiǎn)稱(chēng)SOC。它是最經(jīng)典的架構(gòu)設(shè)計(jì)原則之一,在許多架構(gòu)設(shè)計(jì)中被廣泛使用。關(guān)注點(diǎn)分離原則為我們的架構(gòu)設(shè)計(jì)提出了三點(diǎn)要求。
1.架構(gòu)中需要變化的部分,一定要能夠非常清晰地被識(shí)別出來(lái)。
2.若架構(gòu)中某部分發(fā)生變化,則該變化不會(huì)影響到其他部分。
3.若架構(gòu)中某部分需要擴(kuò)展,則該擴(kuò)展也不會(huì)影響到其他部分。
架構(gòu)能做到關(guān)注點(diǎn)分離,才能做到真正意義上的解耦,這是架構(gòu)師們需要努力實(shí)現(xiàn)的目標(biāo)。如果大家要問(wèn),關(guān)注點(diǎn)分離做得最有效的落地實(shí)踐是什么?我們首先能想到的就是“前后端分離”。
前后端分離
曾經(jīng)我們開(kāi)發(fā)Web應(yīng)用程序時(shí),對(duì)前端和后端的概念不太清晰,開(kāi)發(fā)者們逐漸認(rèn)為前端和后端有必要進(jìn)行分離了,前端需要考慮界面展現(xiàn)與數(shù)據(jù)展現(xiàn)問(wèn)題,后端需要考慮業(yè)務(wù)邏輯與數(shù)據(jù)邏輯問(wèn)題。可見(jiàn),前端和后端所關(guān)注的問(wèn)題是完全不同的,應(yīng)該在架構(gòu)上將它們進(jìn)行分離。此外,在團(tuán)隊(duì)協(xié)作上也能將前端與后端這兩部分的工作進(jìn)行分離,因此出現(xiàn)了前端工程師與后端工程師這兩個(gè)不同崗位。這樣分工絕不是偶然的,它不僅讓架構(gòu)變得更加解耦,還能顯著地提升團(tuán)隊(duì)的開(kāi)發(fā)效率。
針對(duì)前端工程師而言,需要將界面展現(xiàn)與數(shù)據(jù)展現(xiàn)相分離;針對(duì)后端工程師而言,不僅要清晰地理解業(yè)務(wù)邏輯,善于將數(shù)據(jù)進(jìn)行合理的建模,最終還要做到將業(yè)務(wù)邏輯與數(shù)據(jù)邏輯相分離。
業(yè)務(wù)邏輯與數(shù)據(jù)邏輯相分離
業(yè)務(wù)邏輯對(duì)于我們而言已經(jīng)很清楚了,但數(shù)據(jù)邏輯包括哪些呢?最直接的就是一個(gè)個(gè)對(duì)應(yīng)于數(shù)據(jù)庫(kù)中每張數(shù)據(jù)表的實(shí)體對(duì)象,它有一個(gè)很好聽(tīng)的名字:數(shù)據(jù)訪(fǎng)問(wèn)對(duì)象,即DataAccessObject,簡(jiǎn)稱(chēng)DAO。很明顯,這一層數(shù)據(jù)直接和底層數(shù)據(jù)庫(kù)打交道,我們將它們從業(yè)務(wù)邏輯中分離出來(lái),并加以封裝。也就是說(shuō),沒(méi)必要為每一個(gè)DAO對(duì)象初始化的過(guò)程去編寫(xiě)大量的代碼,這些代碼應(yīng)該封裝到一個(gè)框架中。我們只需要編寫(xiě)相應(yīng)的SQL語(yǔ)句,并將這些SQL語(yǔ)句從業(yè)務(wù)代碼中分離出來(lái),最終將執(zhí)行SQL語(yǔ)句所得到的結(jié)果集映射到DAO對(duì)象中即可。
不知道大家對(duì)我剛剛提到的“關(guān)注點(diǎn)分離”有怎樣的理解。無(wú)論大家理解或深或淺,毫無(wú)疑問(wèn),這個(gè)問(wèn)題都已成為架構(gòu)中最核心的部分。
MyBatis就是這樣的框架——它能幫助我們將業(yè)務(wù)邏輯與數(shù)據(jù)邏輯相分離,讓開(kāi)發(fā)應(yīng)用程序的過(guò)程變得更加高效。究竟MyBatis中隱藏著怎樣的奧秘?不要急,這本書(shū)將為大家揭曉答案。
作者增輝停下開(kāi)發(fā)的腳步,通過(guò)深思熟慮和細(xì)心總結(jié),把動(dòng)態(tài)的實(shí)踐靜止到了紙張上,為各位讀者悉心解讀MyBatis的方方面面。相信他創(chuàng)作這本書(shū)的過(guò)程亦如當(dāng)初刻苦自學(xué)MyBatis并在各大社區(qū)開(kāi)源自己編寫(xiě)的核心組件的過(guò)程,傾注了全部的熱情和心血。不忘初心,方得始終,希望各位讀者能夠喜歡這本書(shū),并從中有所收獲。
《架構(gòu)探險(xiǎn)》作者、特贊科技CTO,黃勇
2017年5月
自2013年起,我開(kāi)始帶領(lǐng)團(tuán)隊(duì)開(kāi)發(fā)項(xiàng)目,公司此前使用的是一套深度集成的Spring、Struts和Hibernate框架,這套重量級(jí)框架顯然已經(jīng)不適合用在全新的項(xiàng)目中。當(dāng)時(shí)使用的Hibernate還是較早的版本,在項(xiàng)目的業(yè)務(wù)層需要拼接大量的SQL和HQL才能進(jìn)行數(shù)據(jù)庫(kù)操作。綜合多方面因素,我決定選擇其他持久化框架進(jìn)行項(xiàng)目開(kāi)發(fā)。因?yàn)镸yBatisSQL和代碼分離的方式以及動(dòng)態(tài)SQL的強(qiáng)大功能,加之其在對(duì)查詢(xún)結(jié)果進(jìn)行映射處理等方面具有顯著優(yōu)點(diǎn),因此,我與MyBatis開(kāi)始結(jié)緣。
為了提高查詢(xún)效率,通常會(huì)采用物理分頁(yè),然而MyBatis只能支持內(nèi)存分頁(yè)。若想讓MyBatis支持物理分頁(yè),只能通過(guò)基于攔截器的插件來(lái)實(shí)現(xiàn)。當(dāng)時(shí),已有的MyBatis分頁(yè)插件都不適用于公司已經(jīng)開(kāi)發(fā)了大半的項(xiàng)目,因此我有了自己寫(xiě)一個(gè)分頁(yè)插件的想法。完成后的分頁(yè)插件(PageHelper)能很方便地實(shí)現(xiàn)對(duì)MyBatis查詢(xún)方法的分頁(yè)。后來(lái),我在CSDN和開(kāi)源中國(guó)的博客中分享了代碼,并且詳細(xì)說(shuō)明了實(shí)現(xiàn)原理。在后續(xù)更新插件的一篇博客評(píng)論中,紅薯(開(kāi)源中國(guó)創(chuàng)始人)說(shuō):“應(yīng)該把代碼放到git.oschina.net中,放網(wǎng)盤(pán)很不專(zhuān)業(yè)哦!”因?yàn)檫@句話(huà),我便踏入了開(kāi)源的世界。
由于PageHelper分頁(yè)插件有越來(lái)越多人使用,因而有很多網(wǎng)友通過(guò)留言、私信、郵件等方式和我討論MyBatis的相關(guān)問(wèn)題。為了解決網(wǎng)友的問(wèn)題以及完善分頁(yè)插件的功能,我深入學(xué)習(xí)了MyBatis的源碼,通過(guò)不斷的學(xué)習(xí),不僅從深層次了解了各種問(wèn)題的產(chǎn)生原因,對(duì)MyBatis的理解也逐漸加深。2014年11月,我利用閑暇時(shí)間又開(kāi)發(fā)了一個(gè)新的開(kāi)源項(xiàng)目:MyBatis通用Mapper,它實(shí)現(xiàn)了MyBatis單表增、刪、改、查的基本方法,能夠幫助開(kāi)發(fā)人員節(jié)省大量時(shí)間。
這幾年來(lái),我一直在博客上面和大家分享MyBatis的相關(guān)內(nèi)容,在這期間和網(wǎng)友交流解決的問(wèn)題有很多是重復(fù)的,也有很多都是基礎(chǔ)的?,F(xiàn)在已有的MyBatis學(xué)習(xí)途徑提供給大家的知識(shí),有一些比較深?yuàn)W不適合初學(xué)者,有一些比較基礎(chǔ)卻不全面。為了讓讀者比較容易地全面掌握MyBatis的相關(guān)知識(shí),這本書(shū)得以誕生,本書(shū)將通過(guò)全面完整的大量示例,讓讀者輕松且全面地掌握MyBatis。
閱讀準(zhǔn)備
在開(kāi)始學(xué)習(xí)之前,需要準(zhǔn)備好如下的開(kāi)發(fā)環(huán)境。
JDK1.6及以上版本。
MyBatis3.3.0版本。
MySQL數(shù)據(jù)庫(kù)。
Eclipse4及以上版本。
ApacheMaven構(gòu)建工具。
本書(shū)內(nèi)容
全書(shū)共11章,每一章的具體內(nèi)容如下。
第1章MyBatis入門(mén)
本章先簡(jiǎn)單介紹了MyBatis的發(fā)展歷史和特點(diǎn),然后通過(guò)一步步的操作搭建了一個(gè)學(xué)習(xí)MyBatis的基礎(chǔ)環(huán)境,這個(gè)開(kāi)發(fā)環(huán)境也是學(xué)習(xí)后續(xù)幾個(gè)章節(jié)的基礎(chǔ)。
第2章MyBatisXML方式的基本用法
本章設(shè)定了一個(gè)簡(jiǎn)單的權(quán)限控制需求,使用MyBatisXML方式實(shí)現(xiàn)了數(shù)據(jù)庫(kù)中一個(gè)表的常規(guī)操作。在查詢(xún)方面,通過(guò)根據(jù)主鍵查詢(xún)和查詢(xún)?nèi)績(jī)蓚€(gè)方法讓讀者在學(xué)會(huì)使用MyBatis查詢(xún)方法的同時(shí),還深入了解MyBatis返回值的設(shè)置原理。在增、刪、改方面提供了大量詳細(xì)的示例,這些示例覆蓋了MyBatis基本用法的方方面面。
第3章MyBatis注解方式的基本用法
雖然XML方式是主流,但是仍然有許多公司選擇了注解方式,因此本章非常適合使用注解方式的讀者。本章使用注解方式幾乎實(shí)現(xiàn)了同XML方式類(lèi)似的全部方法,包含許多常用注解的基本用法。對(duì)于初學(xué)者來(lái)說(shuō),即使不使用注解方式,通過(guò)本章和第2章的對(duì)比也可以對(duì)MyBatis有更深的了解。
第4章MyBatis動(dòng)態(tài)SQL
本章詳細(xì)介紹了MyBatis最強(qiáng)大的動(dòng)態(tài)SQL功能,通過(guò)豐富的示例講解了各種動(dòng)態(tài)SQL的用法,為動(dòng)態(tài)SQL中可能出現(xiàn)的問(wèn)題提供了最佳實(shí)踐方案,還提供了動(dòng)態(tài)SQL中常用的OGNL用法。
第5章MyBatis代碼生成器
本章介紹的MyBatis代碼生成器可以減輕基本用法中最繁重的那部分書(shū)寫(xiě)工作帶來(lái)的壓力。通過(guò)本章的學(xué)習(xí),可以使用代碼生成器快速生成大量基礎(chǔ)的方法,讓大家更專(zhuān)注于業(yè)務(wù)代碼的開(kāi)發(fā),從枯燥的基礎(chǔ)編碼中解脫出來(lái)。
第6章MyBatis高級(jí)查詢(xún)
本章介紹了MyBatis中的高級(jí)結(jié)果映射,包括一對(duì)一映射、一對(duì)多映射和鑒別器映射。通過(guò)循序漸進(jìn)的代碼示例讓讀者輕松地學(xué)會(huì)使用MyBatis中最高級(jí)的結(jié)果映射。本章還通過(guò)全面的示例講解了存儲(chǔ)過(guò)程的用法和類(lèi)型處理器的用法。
第7章MyBatis緩存配置
本章講解了MyBatis緩存配置的相關(guān)內(nèi)容,提供了EhCache緩存和Redis緩存的集成方法。雖然二級(jí)緩存功能強(qiáng)大,但是使用不當(dāng)很容易產(chǎn)生臟數(shù)據(jù)。本章針對(duì)臟數(shù)據(jù)的產(chǎn)生提供了最佳解決方案,并且介紹了二級(jí)緩存適用的場(chǎng)景。
第8章MyBatis插件開(kāi)發(fā)
本章介紹了MyBatis強(qiáng)大的擴(kuò)展能力,利用插件可以很方便地在運(yùn)行時(shí)改變MyBatis的行為。通過(guò)兩個(gè)插件示例讓讀者初窺門(mén)徑,結(jié)合第11章的內(nèi)容可以讓讀者開(kāi)發(fā)出適合自己的插件。
第9章Spring集成MyBatis
本章介紹了最流行的輕量級(jí)框架Spring集成MyBatis的方法,通過(guò)一步步操作從零開(kāi)始配置,搭建一個(gè)基本的Spring、SpringMVC、MyBatis開(kāi)發(fā)環(huán)境。
第10章SpringBoot集成MyBatis
本章介紹了最流行的微服務(wù)框架SpringBoot集成MyBatis的方法,通過(guò)MyBatis官方提供的Starter可以很方便地進(jìn)行集成。同時(shí),本章對(duì)Starter中的配置做了簡(jiǎn)單的介紹,可以滿(mǎn)足讀者對(duì)MyBatis各項(xiàng)配置方面的需要。
第11章MyBatis開(kāi)源項(xiàng)目
本章是一扇通往開(kāi)源世界的大門(mén),也是一扇通往MyBatis源碼學(xué)習(xí)的大門(mén)。從Git入門(mén)到GitHub入門(mén),讀者可以學(xué)會(huì)使用最流行的分布式版本控制系統(tǒng)和源代碼托管服務(wù)。通過(guò)一段代碼讓大家了解MyBatis中的一部分關(guān)鍵類(lèi),通過(guò)代碼包講解可以了解MyBatis每個(gè)包中所含的功能。最后通過(guò)MyBatis豐富的測(cè)試用例為讀者提供更多更有用的學(xué)習(xí)內(nèi)容。
致謝
從決定寫(xiě)書(shū),到這本書(shū)能夠出版,中間經(jīng)歷了很多,因此深感來(lái)之不易。在這個(gè)過(guò)程中,要感謝所有為本書(shū)做出過(guò)貢獻(xiàn)的人。感謝我的父母對(duì)我事業(yè)的默默支持。感謝我的妻子參與了本書(shū)的審校工作,給我提供了許多寶貴意見(jiàn)。感謝我的朋友黃勇、熔巖、楊新倫、悠然在百忙之中抽出時(shí)間為我的新書(shū)作序推薦。感謝博文視點(diǎn)的策劃編輯孫奇俏的持續(xù)跟進(jìn)和大力協(xié)助,同時(shí)感謝電子工業(yè)出版社和博文視點(diǎn)的其他老師給予本書(shū)的專(zhuān)業(yè)意見(jiàn)。最后,感謝每一位閱讀本書(shū)的讀者,希望本書(shū)能給您帶來(lái)幫助。衷心感謝大家。
聯(lián)系作者
由衷地感謝大家購(gòu)買(mǎi)此書(shū),希望大家會(huì)喜歡,也希望這本書(shū)能夠?yàn)楦魑蛔x者帶來(lái)所希望獲得的知識(shí)。雖然我已經(jīng)非常細(xì)心地檢查書(shū)中所提到的所有內(nèi)容,但仍有可能存在疏漏,若大家在閱讀過(guò)程中發(fā)現(xiàn)錯(cuò)誤,在此我先表示歉意。歡迎各位讀者對(duì)本書(shū)的內(nèi)容和相關(guān)源代碼發(fā)表意見(jiàn)和評(píng)論。大家可以通過(guò)我的個(gè)人郵箱abel533@gmail.com與我取得聯(lián)系,我會(huì)一一解答每個(gè)人的疑惑。
更多建議: