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

2021-05-12 21:50 更新

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

楊開振 著

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


點(diǎn)此購買


編輯推薦

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

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

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


內(nèi)容簡(jiǎn)介

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


作者簡(jiǎn)介

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


目錄

第1 章 MyBatis 簡(jiǎn)介 1
1.1 傳統(tǒng)的JDBC 編程 1
1.2 ORM 模型 4
1.3 Hibernate 4
1.4 MyBatis 9
1.5 什么時(shí)候用MyBatis 12
第2 章 MyBaits 入門 13
2.1 開發(fā)環(huán)境準(zhǔn)備.13
2.1.1 下載MyBatis 13
2.1.2 搭建開發(fā)環(huán)境 14
2.2 MyBatis 的基本構(gòu)成 15
2.2.1 構(gòu)建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 實(shí)例 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)先級(jí) 40
3.2 設(shè)置 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ù)庫事務(wù) 66
3.7.3 數(shù)據(jù)源 67
3.8 databaseIdProvider 數(shù)據(jù)庫廠商標(biāo)識(shí) 68
3.8.1 使用系統(tǒng)默認(rèn)規(guī)則 68
3.8.2 不使用系統(tǒng)默認(rèn)規(guī)則69
3.9 引入映射器的方法 71
第4 章 映射器 73
4.1 映射器的主要元素 73
4.2 select 元素 74
4.2.1 概述74
4.2.2 簡(jiǎn)易數(shù)據(jù)類型的例子75
4.2.3 自動(dòng)映射.76
4.2.4 傳遞多個(gè)參數(shù) 78
4.2.5 使用resultMap 映射結(jié)果集 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 存儲(chǔ)過程支持 86
4.5.3 特殊字符串替換和處理(#和$) 87
4.6 sql 元素 88
4.7 resultMap 結(jié)果映射集 89
4.7.1 resultMap 元素的構(gòu)成 89
4.7.2 使用map 存儲(chǔ)結(jié)果集91
4.7.3 使用POJO 存儲(chǔ)結(jié)果集 91
4.7.4 級(jí)聯(lián)92
4.8 緩存cache 113
4.8.1 系統(tǒng)緩存(一級(jí)緩存和二級(jí)緩存) 113
4.8.2 自定義緩存 117
第5 章 動(dòng)態(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 的解析和運(yùn)行原理 127
6.1 涉及的技術(shù)難點(diǎn)簡(jiǎn)介 128
6.1.1 反射技術(shù)129
6.1.2 JDK 動(dòng)態(tài)代理.130
6.1.3 CGLIB 動(dòng)態(tài)代理 133
6.2 構(gòu)建SqlSessionFactory 過程134
6.2.1 構(gòu)建Configuration 135
6.2.2 映射器的內(nèi)部組成 136
6.2.3 構(gòu)建SqlSessionFactory 138
6.3 SqlSession 運(yùn)行過程 138
6.3.1 映射器的動(dòng)態(tài)代理 138
6.3.2 SqlSession 下的四大對(duì)象.142
6.3.3 SqlSession 運(yùn)行總結(jié)150
第7 章 插件.152
7.1 插件接口152
7.2 插件的初始化153
7.3 插件的代理和反射設(shè)計(jì)154
7.4 常用的工具類——MetaObject 157
7.5 插件開發(fā)過程和實(shí)例 159
7.5.1 確定需要攔截的簽名 159
7.5.2 實(shí)現(xiàn)攔截方法.161
7.5.3 配置和運(yùn)行 162
7.5.4 插件實(shí)例163
7.6 總結(jié)166
第8 章 MyBatis-Spring 168
8.1 Spring 的基礎(chǔ)知識(shí).168
8.1.1 Spring IOC 基礎(chǔ) 169
8.1.2 Spring AOP 基礎(chǔ) 171
8.1.3 Spring 事務(wù)管理 173
8.1.4 Spring MVC 基礎(chǔ) 179
8.2 MyBatis-Spring 應(yīng)用 181
8.2.1 概述 181
8.2.2 配置SqlSessionFactory 182
8.2.3 配置SqlSessionTemplate 184
8.2.4 配置Mapper 188
8.2.5 配置事務(wù)190
8.3 實(shí)例191
8.3.1 環(huán)境準(zhǔn)備191
8.3.2 文件目錄193
8.3.3 Spring 配置文件 194
8.3.4 MyBatis 框架相關(guān)配置 198
8.3.5 配置服務(wù)層 205
8.3.6 編寫控制器 209
8.3.7 測(cè)試 210
8.4 總結(jié)210
第9 章 實(shí)用的場(chǎng)景 212
9.1 數(shù)據(jù)庫BLOB 字段讀寫 212
9.2 批量更新215
9.3 調(diào)用存儲(chǔ)過程217
9.3.1 存儲(chǔ)過程in 和out 參數(shù)的使用217
9.3.2 存儲(chǔ)過程游標(biāo).220
9.4 分表225
9.5 分頁227
9.5.1 RowBounds 分頁 227
9.5.2 插件分頁229
9.6 上傳文件到服務(wù)器239
9.7 在映射中使用枚舉247
9.8 多對(duì)多級(jí)聯(lián) 249
9.9 總結(jié)253
附錄A 數(shù)據(jù)庫模型描述與級(jí)聯(lián)學(xué)生關(guān)系建表語句.254


前言/序言

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


點(diǎn)此購買


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)