深入淺出MyBatis技術原理與實戰(zhàn)(博文視點出品)

2021-05-12 21:50 更新

深入淺出MyBatis技術原理與實戰(zhàn)(博文視點出品)

楊開振 著

  • 出版社: 電子工業(yè)出版社
  • ISBN:9787121295942
  • 版次:1
  • 商品編碼:11961241
  • 品牌:博文視點
  • 包裝:平裝
  • 開本:16開
  • 出版時間:2016-09-01
  • 用紙:膠版紙
  • 頁數(shù):268
  • 字數(shù):310000


點此購買


編輯推薦

適讀人群 :Java、Java持久層框架

  本書開創(chuàng)國內對MyBatis技術應用的探索先河。本書首先是基于官方文檔論述的完善和具體實例的補充,并且詳細闡述了MyBatis內部運行原理和插件開發(fā)過程,同時教你整合開發(fā)MyBatis-Spring項目。

  沒有味同嚼蠟的理論說教,只有實實在在的方法應用,幫助你在一線工作中用好MyBatis。


內容簡介

  隨著大數(shù)據(jù)時代的到來,Java持久層框架MyBatis已經成為越來越多企業(yè)的選擇。遺憾的是,時至今日國內依然沒有一本討論MyBatis的書,這增加了初學者的學習難度,初學者往往只能基于零星的案例來學習MyBatis,無法系統(tǒng)地掌握MyBatis,更不用說精通了。《深入淺出MyBatis技術原理與實戰(zhàn)》是筆者通過大量實踐和研究源碼后創(chuàng)作而成的,是國內系統(tǒng)介紹MyBatis著作的先河。
  《深入淺出MyBatis技術原理與實戰(zhàn)》分為3個部分,依次介紹了MyBatis的基礎應用、原理及插件開發(fā)、實踐應用,使讀者能夠由淺入深、循序漸進地掌握MyBatis技術。首先,《深入淺出MyBatis技術原理與實戰(zhàn)》在官方API的基礎上完善了許多重要的論述和實例,并且給出了實操建議,幫助讀者正確掌握MyBatis。其次,《深入淺出MyBatis技術原理與實戰(zhàn)》詳細講述了MyBatis的內部運行原理,并全面討論了插件的開發(fā)。最后,本著學以致用的原則,筆者闡述了MyBatis-Spring項目和一些MyBatis開發(fā)常見的實例,使讀者能夠學得會,用得好。
  《深入淺出MyBatis技術原理與實戰(zhàn)》不是一本味同嚼蠟的理論專著,而是一本MyBatis的實踐指南,無論你是Java程序員、MyBatis開發(fā)者,還是Java持久層框架的研究者,你都能從本書中收獲知識。


作者簡介

  楊開振,長期從事Java開發(fā)工作,擁有近十年的Java開發(fā)經驗,目前就職于一家互聯(lián)網金融公司,擔任互聯(lián)網軟件開發(fā)職位。
  IT技術的狂熱愛好者,熱衷于Java互聯(lián)網方向的軟件技術開發(fā)與研究。
  熟練掌握Java基礎、軟件開發(fā)設計模式和數(shù)據(jù)庫相關知識,對Spring、MyBatis等主流Java開源框架有深入研究。


目錄

第1 章 MyBatis 簡介 1
1.1 傳統(tǒng)的JDBC 編程 1
1.2 ORM 模型 4
1.3 Hibernate 4
1.4 MyBatis 9
1.5 什么時候用MyBatis 12
第2 章 MyBaits 入門 13
2.1 開發(fā)環(huán)境準備.13
2.1.1 下載MyBatis 13
2.1.2 搭建開發(fā)環(huán)境 14
2.2 MyBatis 的基本構成 15
2.2.1 構建SqlSessionFactory 15
2.2.2 創(chuàng)建SqlSession19
2.2.3 映射器 21
2.3 生命周期.26
2.3.1 SqlSessionFactoryBuilder 27
2.3.2 SqlSessionFactory 27
2.3.3 SqlSession 27
2.3.4 Mapper 28
2.4 實例 28
第3 章 配置 37
3.1 properties 元素 38
3.1.1 property 子元素.38
3.1.2 properties 配置文件 39
3.1.3 程序參數(shù)傳遞 39
3.1.4 優(yōu)先級 40
3.2 設置 41
3.3 別名 44
3.3.1 系統(tǒng)定義別名 44
3.3.2 自定義別名 47
3.4 typeHandler 類型處理器.48
3.4.1 系統(tǒng)定義的typeHandler 49
3.4.2 自定義typeHandler 51
3.4.3 枚舉類型typeHandler55
3.5 ObjectFactory 62
3.6 插件 65
3.7 environments 配置環(huán)境 65
3.7.1 概述65
3.7.2 數(shù)據(jù)庫事務 66
3.7.3 數(shù)據(jù)源 67
3.8 databaseIdProvider 數(shù)據(jù)庫廠商標識 68
3.8.1 使用系統(tǒng)默認規(guī)則 68
3.8.2 不使用系統(tǒng)默認規(guī)則69
3.9 引入映射器的方法 71
第4 章 映射器 73
4.1 映射器的主要元素 73
4.2 select 元素 74
4.2.1 概述74
4.2.2 簡易數(shù)據(jù)類型的例子75
4.2.3 自動映射.76
4.2.4 傳遞多個參數(shù) 78
4.2.5 使用resultMap 映射結果集 81
4.3 insert 元素 82
4.3.1 概述82
4.3.2 主鍵回填和自定義 83
4.4 update 元素和delete 元素 85
4.5 參數(shù) 85
4.5.1 參數(shù)配置.86
4.5.2 存儲過程支持 86
4.5.3 特殊字符串替換和處理(#和$) 87
4.6 sql 元素 88
4.7 resultMap 結果映射集 89
4.7.1 resultMap 元素的構成 89
4.7.2 使用map 存儲結果集91
4.7.3 使用POJO 存儲結果集 91
4.7.4 級聯(lián)92
4.8 緩存cache 113
4.8.1 系統(tǒng)緩存(一級緩存和二級緩存) 113
4.8.2 自定義緩存 117
第5 章 動態(tài)SQL 119
5.1 概述119
5.2 if 元素 120
5.3 choose、when、otherwise 元素 120
5.4 trim、where、set 元素 121
5.5 foreach 元素 123
5.6 test 的屬性 124
5.7 bind 元素125
第6 章 MyBatis 的解析和運行原理 127
6.1 涉及的技術難點簡介 128
6.1.1 反射技術129
6.1.2 JDK 動態(tài)代理.130
6.1.3 CGLIB 動態(tài)代理 133
6.2 構建SqlSessionFactory 過程134
6.2.1 構建Configuration 135
6.2.2 映射器的內部組成 136
6.2.3 構建SqlSessionFactory 138
6.3 SqlSession 運行過程 138
6.3.1 映射器的動態(tài)代理 138
6.3.2 SqlSession 下的四大對象.142
6.3.3 SqlSession 運行總結150
第7 章 插件.152
7.1 插件接口152
7.2 插件的初始化153
7.3 插件的代理和反射設計154
7.4 常用的工具類——MetaObject 157
7.5 插件開發(fā)過程和實例 159
7.5.1 確定需要攔截的簽名 159
7.5.2 實現(xiàn)攔截方法.161
7.5.3 配置和運行 162
7.5.4 插件實例163
7.6 總結166
第8 章 MyBatis-Spring 168
8.1 Spring 的基礎知識.168
8.1.1 Spring IOC 基礎 169
8.1.2 Spring AOP 基礎 171
8.1.3 Spring 事務管理 173
8.1.4 Spring MVC 基礎 179
8.2 MyBatis-Spring 應用 181
8.2.1 概述 181
8.2.2 配置SqlSessionFactory 182
8.2.3 配置SqlSessionTemplate 184
8.2.4 配置Mapper 188
8.2.5 配置事務190
8.3 實例191
8.3.1 環(huán)境準備191
8.3.2 文件目錄193
8.3.3 Spring 配置文件 194
8.3.4 MyBatis 框架相關配置 198
8.3.5 配置服務層 205
8.3.6 編寫控制器 209
8.3.7 測試 210
8.4 總結210
第9 章 實用的場景 212
9.1 數(shù)據(jù)庫BLOB 字段讀寫 212
9.2 批量更新215
9.3 調用存儲過程217
9.3.1 存儲過程in 和out 參數(shù)的使用217
9.3.2 存儲過程游標.220
9.4 分表225
9.5 分頁227
9.5.1 RowBounds 分頁 227
9.5.2 插件分頁229
9.6 上傳文件到服務器239
9.7 在映射中使用枚舉247
9.8 多對多級聯(lián) 249
9.9 總結253
附錄A 數(shù)據(jù)庫模型描述與級聯(lián)學生關系建表語句.254


前言/序言

  隨著手機、平板電腦等移動終端的廣泛應用,移動互聯(lián)網時代已經到來。在這個時代里,構建一個高效的平臺并提供服務是移動互聯(lián)網的基礎,在眾多的網站服務中,使用Java構建網站的不在少數(shù)。移動互聯(lián)網的特點是大數(shù)據(jù)、高并發(fā),對服務器往往要求分布式、高性能、高靈活等,而傳統(tǒng)模式的Java數(shù)據(jù)庫編程框架已經不再適用了。在這樣的背景下,一個Java的持久框架MyBatis走入了我們的世界,它以封裝少、高性能、可優(yōu)化、維護簡易等優(yōu)點成為了目前Java移動互聯(lián)網網站服務的首選持久框架,它特別適合分布式和大數(shù)據(jù)網絡數(shù)據(jù)庫的編程。
  本書主要講解了MyBatis的應用。從目前的情況來看,國內圖書市場上沒有介紹MyBatis的書籍,有的只是官方的API和少數(shù)的幾篇博客文章,國外圖書市場上的這類書籍也是鳳毛麟角,這使得系統(tǒng)學習MyBatis困難重重。官方的API只是簡單介紹了MyBatis有些什么功能和一些基本的使用方法,沒有告訴我們如何用好,其中原理是什么,需要注意哪些問題,這顯然是不夠的。有些博客雖然講解得比較深入,但是內容支離破碎,沒有形成一個完整的知識體系,不易于初學者對MyBatis進行系統(tǒng)學習。隨著移動互聯(lián)網應用的興起,系統(tǒng)掌握MyBatis編程技巧已經成了用Java構建移動互聯(lián)網網站的必要條件。為了順應時代的要求,筆者寫下了這本書,以期為廣大需要掌握MyBatis的開發(fā)者提供學習和參考的資料。
  閱讀本書要求開發(fā)人員擁有Java語言基礎和JDBC基礎知識,對數(shù)據(jù)庫也要掌握入門知識,最好能夠掌握常用的設計模式,因為在介紹MyBatis構造時,常常涉及設計模式,尤其是第6章和第7章的內容。
  本書以講解MyBatis基礎運用和原理為主,所以適合初級到中高級開發(fā)人員閱讀。
  本書分為三大部分。
  第一部分是MyBatis基礎應用,主要介紹如何高效地使用MyBatis。
  第1章:MyBatis的內容簡介,告訴讀者MyBatis是什么,在何種場景下使用它。
  第2章:主要介紹MyBatis的基礎模塊及其生命周期,并給出實例。
  第3章:主要介紹MyBatis配置的主要含義和內容。
  第4章:介紹MyBatis映射器的主要元素及其使用方法。
  第5章:介紹動態(tài)SQL,助你輕松應對大部分的SQL場景。
  第二部分是MyBatis原理,我們將深入源碼去理解MyBatis的內部運行原理以及插件的開發(fā)方法和技巧。
  第6章:介紹MyBatis的解析和運行原理,我們將了解到SqlSession的構建方法,以及其四大對象是如何工作的。
  第7章:在第6章的基礎上著重介紹MyBatis的插件,這里我們將學習插件的設計原理,以及開發(fā)方法和注意的要點。
  第三部分是MyBatis的實戰(zhàn)應用,主要講解MyBatis的一些實用的場景。
  第8章:介紹MyBatis-Spring,主要講解如何在Spring項目中集成MyBatis應用,幫助讀者在Spring的環(huán)境中順利使用MyBatis。
  第9章:介紹MyBatis的實用場景,精選一批典型且又常用的場景。詳細解析每一個場景下,開發(fā)人員需要注意避免的一些錯誤和性能上的損失。
  MyBatis源于2002年的iBatis項目,至今MyBatis中依然有許多iBatis的痕跡。本書默認使用MyBatis的版本是3.3.0,使用MyBatis-Spring的版本是1.2.3。而歷史上的iBatis的書籍已經跟不上技術發(fā)展的步伐,于是筆者通過自己的努力和實踐,在研究MyBatis源碼的基礎上,寫作本書。從本書中既能學習如何使用MyBatis,也可以學習MyBatis的原理和應用,為國內的MyBatis開發(fā)者提供一條系統(tǒng)掌握MyBatis編程技巧的捷徑,當然讀者也可以把本書作為工具書參考。在實際操作中,MyBatis往往是結合Spring使用的,于是本書花費了一些篇幅講解MyBatis-Spring技術,筆者也會略略提到Spring項目的內容,以便更好地論述它們。最后筆者還將講解一些使用頻率高、參考價值大的場景,使讀者能熟練掌握MyBatis的開發(fā)。
  本書堅持實用原則,對于一些使用頻率低的技術并沒有提及太多,比如注解SQL、SQL
  構造器等內容,使用這些內容,會造成代碼的可讀性下降。
  感謝我的公司為我提供真實的使用MyBatis的環(huán)境,所有的程序代碼都經過了調試。感謝我的姐姐楊堅,她參與編寫并通篇審校了本書,潤色了那些晦澀的句子。同時也感謝電子工業(yè)出版社的編輯們,尤其是汪達文的全程跟進。沒有他們的辛苦付出,就沒有本書的成功出版。在出版本書的欣喜之余,也伴著戰(zhàn)戰(zhàn)兢兢,因為筆者才疏學淺,很多東西都是從對源碼的理解和實際操作中獲得的,因此書中難免有疏漏之處,或有不能讓讀者滿意的地方。如果有困惑,讀者可以發(fā)郵件到我的郵箱:ykzhen2013@163.com,也可以在我的博客(http://blog.csdn.net/ykzhen2015)中和我討論,還望各位同行不吝賜教。
  楊開振
  2016年7月


點此購買


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號