發表於2024-11-22
適讀人群:Java開發人員
1.資深Java開發工程師執筆
作者是資深Java開發工程師,活躍於CSDN及開源中國,對MyBatis研究深入,是MyBatis官方推薦的分頁插件PageHelper即通用Mapper的作者。
2.示例完整,注釋詳細
《MyBatis從入門到精通》中的示例代碼都非常完整,同時每行核心語句都附有注釋,可以幫助讀者輕鬆掌握代碼的內容,快速入門,持續深化,舉一反三。
2.解讀源碼,資源豐富
《MyBatis從入門到精通》的特點在於詳細解讀MyBatis源代碼,帶領大傢深入理解源碼核心。另外,作者開源瞭許多優秀項目(MyBatis官方推薦的擴展組件等),每一位讀者都可以獲得《MyBatis從入門到精通》的寶貴資源,並與作者交流討論。
《MyBatis從入門到精通》中從一個簡單的MyBatis查詢入手,搭建起學習MyBatis的基礎開發環境。通過全麵的示例代碼和測試講解瞭在MyBatis XML方式和注解方式中進行增、刪、改、查操作的基本用法,介紹瞭動態SQL在不同方麵的應用以及在使用過程中的實踐方案。針對MyBatis高級映射、存儲過程和類型處理器提供瞭豐富的示例,通過自下而上的方法使讀者更好地理解和掌握MyBatis的高級用法,同時針對MyBatis的代碼生成器提供瞭詳細的配置介紹。此外,《MyBatis從入門到精通》還提供瞭緩存配置、插件開發、Spring、Spring Boot集成的詳細內容。最後通過介紹Git和GitHub讓讀者瞭解MyBatis開源項目,通過對MyBatis源碼和測試用例的講解讓讀者更好掌握MyBatis。
劉增輝,資深Java工程師,熱愛技術研究,樂於分享心得,活躍於CSDN和開源中國網站。對MyBatis源碼有著深入研究,同時熱衷於開源項目,在GitHub和開源中國網站上發布瞭多個開源項目,是MyBatis官方推薦的分頁插件PageHelper和通用Mapper的作者,所發布項目受到瞭數韆人的關注。
第1章 MyBatis入門 1
1.1 MyBatis簡介 2
1.2 創建Maven項目 3
1.3 簡單配置讓MyBatis跑起來 7
1.3.1 準備數據庫 8
1.3.2 配置MyBatis 8
1.3.3 創建實體類和Mapper.xml文件 10
1.3.4 配置Log4j以便查看MyBatis操作數據庫的過程 11
1.3.5 編寫測試代碼讓MyBatis跑起來 12
1.4 本章小結 14
第2章 MyBatis XML方式的基本用法 15
2.1 一個簡單的權限控製需求 16
2.1.1 創建數據庫錶 16
2.1.2 創建實體類 19
2.2 使用XML方式 21
2.3 select用法 23
2.4 insert用法 35
2.4.1 簡單的insert方法 35
2.4.2 使用JDBC方式返迴主鍵自增的值 38
2.4.3 使用selectKey返迴主鍵的值 40
2.5 update用法 42
2.6 delete用法 45
2.7 多個接口參數的用法 47
2.8 Mapper接口動態代理實現原理 50
2.9 本章小結 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 本章小結 61
第4章 MyBatis動態SQL 63
4.1 if用法 64
4.1.1 在WHERE條件中使用if 64
4.1.2 在UPDATE更新列中使用if 68
4.1.3 在INSERT動態插入列中使用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實現in集閤 78
4.4.2 foreach實現批量插入 81
4.4.3 foreach實現動態UPDATE 84
4.5 bind用法 86
4.6 多數據庫支持 86
4.7 OGNL用法 89
4.8 本章小結 90
第5章 Mybatis代碼生成器 91
5.1 XML配置詳解 92
5.1.1 property標簽 95
5.1.2 plugin標簽 96
5.1.3 commentGenerator標簽 97
5.1.4 jdbcConnection標簽 99
5.1.5 javaTypeResolver標簽 100
5.1.6 javaModelGenerator標簽 101
5.1.7 sqlMapGenerator標簽 102
5.1.8 javaClientGenerator標簽 103
5.1.9 table標簽 104
5.2 一個配置參考示例 109
5.3 運行MyBatis Generator 111
5.3.1 使用Java編寫代碼運行 111
5.3.2 從命令提示符運行 113
5.3.3 使用Maven Plugin運行 115
5.3.4 使用Eclipse插件運行 117
5.4 Example介紹 119
5.5 本章小結 124
第6章 MyBatis高級查詢 125
6.1 高級結果映射 126
6.1.1 一對一映射 126
6.1.2 一對多映射 140
6.1.3 鑒彆器映射 156
6.2 存儲過程 159
6.2.1 第一個存儲過程 162
6.2.2 第二個存儲過程 164
6.2.3 第三個和第四個存儲過程 166
6.2.4 在Oracle中使用遊標參數的存儲過程 168
6.3 使用枚舉或其他對象 170
6.3.1 使用MyBatis提供的枚舉處理器 170
6.3.2 使用自定義的類型處理器 172
6.3.3 對Java 8日期(JSR-310)的支持 175
6.4 本章小結 176
第7章 MyBatis緩存配置 177
7.1 一級緩存 178
7.2 二級緩存 181
7.2.1 配置二級緩存 181
7.2.2 使用二級緩存 184
7.3 集成EhCache緩存 187
7.4 集成Redis緩存 190
7.5 髒數據的産生和避免 191
7.6 二級緩存適用場景 194
7.7 本章小結 194
第8章 MyBatis插件開發 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 下畫綫鍵值轉小寫駝峰形式插件 203
8.4 分頁插件 206
8.4.1 PageInterceptor攔截器類 207
8.4.2 Dialect接口 212
8.4.3 MySqlDialect實現 216
8.5 本章小結 220
第9章 Spring集成MyBatis 221
9.1 創建基本的Maven Web項目 222
9.2 集成Spring和Spring MVC 227
9.3 集成MyBatis 232
9.4 幾個簡單實例 234
9.4.1 基本準備 235
9.4.2 開發Mapper層(Dao層) 235
9.4.3 開發業務層(Service層) 238
9.4.4 開發控製層(Controller層) 240
9.4.5 開發視圖層(View層) 242
9.4.6 部署和運行應用 245
9.5 本章小結 246
第10章 Spring Boot集成MyBatis 247
10.1 基本的Spring Boot項目 248
10.2 集成MyBatis 251
10.3 MyBatis Starter配置介紹 253
10.4 簡單示例 255
10.4.1 引入simple依賴 255
10.4.2 開發業務(Service)層 258
10.4.3 開發控製(Controller)層 259
10.4.4 運行應用查看效果 259
10.5 本章小結 260
第11章 MyBatis開源項目 261
11.1 Git入門 262
11.1.1 初次運行配置 262
11.1.2 初始化和剋隆倉庫 263
11.1.3 本地操作 265
11.1.4 遠程操作 267
11.2 GitHub入門 269
11.2.1 創建並提交到倉庫 269
11.2.2 Fork倉庫並剋隆到本地 272
11.2.3 社交功能 275
11.3 MyBatis源碼講解 278
11.4 MyBatis測試用例 290
11.5 本章小結 293
附錄 類型處理器(TypeHandler) 295
分離是為瞭更好的相聚
2013年,我在開源中國網站上認識瞭本書作者劉增輝,並和他多次探討過關於Java開源框架的種種技術問題。那段時間,我正在開源一款名為SmartFramework的輕量級JavaWeb框架,當時我不敢奢望自己開源的框架會有多少人認可,但沒想到後來還真有不少朋友們為此框架提齣瞭寶貴建議並做齣瞭巨大貢獻。尤其是在數據持久層這塊,增輝給瞭我許多支持與幫助,讓我感受到開源帶給我的不僅是技術能力上的提升,更多的是讓自己感到快樂。
我瞭解到增輝對MyBatis的研究頗為深入,不僅對MyBatis的內核,甚至對於其擴展都能做到瞭然於心、遊刃有餘。他曾經也開源瞭許多MyBatis核心組件,幫助許多開發者提高瞭工作效率,而我正是這眾多開發者中的一位。
我不想占用這篇推薦序的寶貴篇幅為大傢講解如何來使用MyBatis,因為這本書中對MyBatis的介紹遠比我講的更加詳細和深入。現在我隻想和大傢聊聊架構設計中的一個核心問題:關注點分離。因為這個問題同樣也是MyBatis框架需要解決的核心問題。
關注點分離
關注點分離所對應的英文是SeparationofConcerns,簡稱SOC。它是最經典的架構設計原則之一,在許多架構設計中被廣泛使用。關注點分離原則為我們的架構設計提齣瞭三點要求。
1.架構中需要變化的部分,一定要能夠非常清晰地被識彆齣來。
2.若架構中某部分發生變化,則該變化不會影響到其他部分。
3.若架構中某部分需要擴展,則該擴展也不會影響到其他部分。
架構能做到關注點分離,纔能做到真正意義上的解耦,這是架構師們需要努力實現的目標。如果大傢要問,關注點分離做得最有效的落地實踐是什麼?我們首先能想到的就是“前後端分離”。
前後端分離
曾經我們開發Web應用程序時,對前端和後端的概念不太清晰,開發者們逐漸認為前端和後端有必要進行分離瞭,前端需要考慮界麵展現與數據展現問題,後端需要考慮業務邏輯與數據邏輯問題。可見,前端和後端所關注的問題是完全不同的,應該在架構上將它們進行分離。此外,在團隊協作上也能將前端與後端這兩部分的工作進行分離,因此齣現瞭前端工程師與後端工程師這兩個不同崗位。這樣分工絕不是偶然的,它不僅讓架構變得更加解耦,還能顯著地提升團隊的開發效率。
針對前端工程師而言,需要將界麵展現與數據展現相分離;針對後端工程師而言,不僅要清晰地理解業務邏輯,善於將數據進行閤理的建模,最終還要做到將業務邏輯與數據邏輯相分離。
業務邏輯與數據邏輯相分離
業務邏輯對於我們而言已經很清楚瞭,但數據邏輯包括哪些呢?最直接的就是一個個對應於數據庫中每張數據錶的實體對象,它有一個很好聽的名字:數據訪問對象,即DataAccessObject,簡稱DAO。很明顯,這一層數據直接和底層數據庫打交道,我們將它們從業務邏輯中分離齣來,並加以封裝。也就是說,沒必要為每一個DAO對象初始化的過程去編寫大量的代碼,這些代碼應該封裝到一個框架中。我們隻需要編寫相應的SQL語句,並將這些SQL語句從業務代碼中分離齣來,最終將執行SQL語句所得到的結果集映射到DAO對象中即可。
不知道大傢對我剛剛提到的“關注點分離”有怎樣的理解。無論大傢理解或深或淺,毫無疑問,這個問題都已成為架構中最核心的部分。
MyBatis就是這樣的框架——它能幫助我們將業務邏輯與數據邏輯相分離,讓開發應用程序的過程變得更加高效。究竟MyBatis中隱藏著怎樣的奧秘?不要急,這本書將為大傢揭曉答案。
作者增輝停下開發的腳步,通過深思熟慮和細心總結,把動態的實踐靜止到瞭紙張上,為各位讀者悉心解讀MyBatis的方方麵麵。相信他創作這本書的過程亦如當初刻苦自學MyBatis並在各大社區開源自己編寫的核心組件的過程,傾注瞭全部的熱情和心血。不忘初心,方得始終,希望各位讀者能夠喜歡這本書,並從中有所收獲。
《架構探險》作者、特贊科技CTO,黃勇
2017年5月
自2013年起,我開始帶領團隊開發項目,公司此前使用的是一套深度集成的Spring、Struts和Hibernate框架,這套重量級框架顯然已經不適閤用在全新的項目中。當時使用的Hibernate還是較早的版本,在項目的業務層需要拼接大量的SQL和HQL纔能進行數據庫操作。綜閤多方麵因素,我決定選擇其他持久化框架進行項目開發。因為MyBatisSQL和代碼分離的方式以及動態SQL的強大功能,加之其在對查詢結果進行映射處理等方麵具有顯著優點,因此,我與MyBatis開始結緣。
為瞭提高查詢效率,通常會采用物理分頁,然而MyBatis隻能支持內存分頁。若想讓MyBatis支持物理分頁,隻能通過基於攔截器的插件來實現。當時,已有的MyBatis分頁插件都不適用於公司已經開發瞭大半的項目,因此我有瞭自己寫一個分頁插件的想法。完成後的分頁插件(PageHelper)能很方便地實現對MyBatis查詢方法的分頁。後來,我在CSDN和開源中國的博客中分享瞭代碼,並且詳細說明瞭實現原理。在後續更新插件的一篇博客評論中,紅薯(開源中國創始人)說:“應該把代碼放到git.oschina.net中,放網盤很不專業哦!”因為這句話,我便踏入瞭開源的世界。
由於PageHelper分頁插件有越來越多人使用,因而有很多網友通過留言、私信、郵件等方式和我討論MyBatis的相關問題。為瞭解決網友的問題以及完善分頁插件的功能,我深入學習瞭MyBatis的源碼,通過不斷的學習,不僅從深層次瞭解瞭各種問題的産生原因,對MyBatis的理解也逐漸加深。2014年11月,我利用閑暇時間又開發瞭一個新的開源項目:MyBatis通用Mapper,它實現瞭MyBatis單錶增、刪、改、查的基本方法,能夠幫助開發人員節省大量時間。
這幾年來,我一直在博客上麵和大傢分享MyBatis的相關內容,在這期間和網友交流解決的問題有很多是重復的,也有很多都是基礎的。現在已有的MyBatis學習途徑提供給大傢的知識,有一些比較深奧不適閤初學者,有一些比較基礎卻不全麵。為瞭讓讀者比較容易地全麵掌握MyBatis的相關知識,這本書得以誕生,本書將通過全麵完整的大量示例,讓讀者輕鬆且全麵地掌握MyBatis。
閱讀準備
在開始學習之前,需要準備好如下的開發環境。
JDK1.6及以上版本。
MyBatis3.3.0版本。
MySQL數據庫。
Eclipse4及以上版本。
ApacheMaven構建工具。
本書內容
全書共11章,每一章的具體內容如下。
第1章MyBatis入門
本章先簡單介紹瞭MyBatis的發展曆史和特點,然後通過一步步的操作搭建瞭一個學習MyBatis的基礎環境,這個開發環境也是學習後續幾個章節的基礎。
第2章MyBatisXML方式的基本用法
本章設定瞭一個簡單的權限控製需求,使用MyBatisXML方式實現瞭數據庫中一個錶的常規操作。在查詢方麵,通過根據主鍵查詢和查詢全部兩個方法讓讀者在學會使用MyBatis查詢方法的同時,還深入瞭解MyBatis返迴值的設置原理。在增、刪、改方麵提供瞭大量詳細的示例,這些示例覆蓋瞭MyBatis基本用法的方方麵麵。
第3章MyBatis注解方式的基本用法
雖然XML方式是主流,但是仍然有許多公司選擇瞭注解方式,因此本章非常適閤使用注解方式的讀者。本章使用注解方式幾乎實現瞭同XML方式類似的全部方法,包含許多常用注解的基本用法。對於初學者來說,即使不使用注解方式,通過本章和第2章的對比也可以對MyBatis有更深的瞭解。
第4章MyBatis動態SQL
本章詳細介紹瞭MyBatis最強大的動態SQL功能,通過豐富的示例講解瞭各種動態SQL的用法,為動態SQL中可能齣現的問題提供瞭最佳實踐方案,還提供瞭動態SQL中常用的OGNL用法。
第5章MyBatis代碼生成器
本章介紹的MyBatis代碼生成器可以減輕基本用法中最繁重的那部分書寫工作帶來的壓力。通過本章的學習,可以使用代碼生成器快速生成大量基礎的方法,讓大傢更專注於業務代碼的開發,從枯燥的基礎編碼中解脫齣來。
第6章MyBatis高級查詢
本章介紹瞭MyBatis中的高級結果映射,包括一對一映射、一對多映射和鑒彆器映射。通過循序漸進的代碼示例讓讀者輕鬆地學會使用MyBatis中最高級的結果映射。本章還通過全麵的示例講解瞭存儲過程的用法 MyBatis從入門到精通 下載 mobi epub pdf txt 電子書 格式
MyBatis從入門到精通 下載 mobi pdf epub txt 電子書 格式 2024
MyBatis從入門到精通 下載 mobi epub pdf 電子書很好,不錯,我是程序員,加油,我愛你麼麼噠
評分書不錯,實例驅動
評分首先呢,這本書我大概看瞭下目錄,確實很適閤入門,但是精通我感覺這本書可能不適閤,和我看看視頻的內容很切閤!
評分質量好,好看,送貨速度快哦
評分書不錯,學習使用,寫的挺通俗易懂的
評分618搞活動入手的,好好給自己充下電,書的印刷質量不錯,內容看過後再來追評。
評分搞活動相當於對摺,一起買瞭好幾本書,很實惠,兩天的樣子到瞭,很新包裝精美,應該正品
評分一直在用作者的mybatis通用mapper,買書支持一下
評分書不錯,是正版,還沒仔細看,京東物流很給力
MyBatis從入門到精通 mobi epub pdf txt 電子書 格式下載 2024