W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
徐郡明 著
適讀人群 :本書適合有Java基礎(chǔ),希望了解MyBatis設(shè)計原理和實現(xiàn)的讀者
詳細分析MyBatis 3.4源碼,并融入了作者對MyBatis架構(gòu)設(shè)計的理解,還介紹以插件方式擴展MyBatis的原理以及與Spring集成的原理,跟著作者一起去探究MyBatis 的技術(shù)內(nèi)幕吧
本書以MyBatis 3.4為基礎(chǔ),針對MyBatis的架構(gòu)設(shè)計和實現(xiàn)細節(jié)進行了詳細分析,其中穿插介紹了MyBatis源碼中涉及的基礎(chǔ)知識、設(shè)計模式以及筆者自己在實踐中的思考。本書共4章,從MyBatis快速入門開始,逐步分析了MyBatis的整體架構(gòu)以及核心概念,對MyBatis的基礎(chǔ)支持層、核心處理層中各個模塊的功能和實現(xiàn)細節(jié)進行了深入的剖析。除此之外,還分析了MyBatis插件的應(yīng)用場景和實現(xiàn)原理,介紹了MyBatis與Spring集成開發(fā)的示例和原理,以及一些實踐中的小技巧和小工具的使用方法。本書旨在為讀者理解MyBatis的設(shè)計原理、閱讀MyBatis源碼、擴展MyBatis功能提供幫助和指導(dǎo),讓讀者更加深入地了解MyBatis的運行原理、設(shè)計理念。希望本書能夠幫助讀者全面提升自身的技術(shù)能力,讓讀者在設(shè)計業(yè)務(wù)系統(tǒng)時,可以參考MyBatis的優(yōu)秀設(shè)計,更好地應(yīng)用MyBatis。
徐郡明,武漢大學碩士,目前就職于航天科技集團旗下某研究所,主要負責政企云平臺基礎(chǔ)架構(gòu)的設(shè)計和研發(fā)工作,關(guān)注多項Java開源技術(shù)的發(fā)展。
《MyBatis技術(shù)內(nèi)幕》深入淺出地講解了MyBatis的底層原理,清晰的寫作思路、翔實的內(nèi)容讓我受益匪淺,這是一本優(yōu)秀的進階書籍。
——中量財富(北京)策略研發(fā)中心總經(jīng)理 朱碧穎
MyBatis現(xiàn)在已經(jīng)是Java企業(yè)級開發(fā)中的主流框架之一?!禡yBatis技術(shù)內(nèi)幕》全面地剖析了MyBatis的架構(gòu)設(shè)計,同時作者也分享了很多實踐經(jīng)驗,值得一讀。
——小米科技高級研發(fā)工程師 逄志強
《MyBatis技術(shù)內(nèi)幕》深入分析了MyBatis的設(shè)計思想,幫助讀者了解MyBatis的運行原理,作者分析源碼時思路清晰、講解到位,是一本非常難得的好書。
——華為高級研發(fā)工程師 楊俊靈
《MyBatis技術(shù)內(nèi)幕》展示了MyBatis框架的全景,其中特別喜歡作者將設(shè)計模式的講解與MyBatis源碼剖析相結(jié)合的寫作方式,讓我們不僅了解了設(shè)計模式的概念,還學習到了這些模式的*佳實踐。
——搜狗高級開發(fā)工程師 李全才
我特別喜歡著名作家侯捷說過的一句話:“源碼面前,了無秘密”?!禡yBatis技術(shù)內(nèi)幕》可以讓讀者深入透徹地理解MyBatis內(nèi)部結(jié)構(gòu)。對于Java程序員來說,是一本不可錯過的佳作。
——微醫(yī)集團Java高級研發(fā)工程師 曾君實
第1章 MyBatis快速入門
1.1 ORM簡介
1.2 常見持久化框架
1.3 MyBatis示例
1.4 MyBatis整體架構(gòu)
1.4.1 基礎(chǔ)支持層
1.4.2 核心處理層
1.4.3 接口層
1.5 本章小結(jié)
第2章 基礎(chǔ)支持層
2.1 解析器模塊
2.1.1 XPath簡介
2.1.2 XPathParser
2.2 反射工具箱
2.2.1 Reflector&ReflectorFactory
2.2.2 TypeParameterResolver
2.2.3 ObjectFactory
2.2.4 Property工具集
2.2.5 MetaClass
2.2.6 ObjectWrapper
2.2.7 MetaObject
2.3 類型轉(zhuǎn)換
2.3.1 TypeHandler
2.3.2 TypeHandlerRegistry
2.3.3 TypeAliasRegistry
2.4 日志模塊
2.4.1 適配器模式
2.4.2 日志適配器
2.4.3 代理模式與JDK動態(tài)代理
2.4.4 JDBC調(diào)試
2.5 資源加載
2.5.1 類加載器簡介
2.5.2 ClassLoaderWrapper
2.5.3 ResolverUtil
2.5.4 單例模式
2.5.5 VFS
2.6 DataSource
2.6.1 工廠方法模式
2.6.2 DataSourceFactory
2.6.3 UnpooledDataSource
2.6.4 PooledDataSource
2.7 Transaction
2.8 binding模塊
2.8.1 MapperRegistry&MapperProxyFactory
2.8.2 MapperProxy
2.8.3 MapperMethod
2.9 緩存模塊
2.9.1 裝飾器模式
2.9.2 Cache接口及其實現(xiàn)
2.9.3 CacheKey
2.10 本章小結(jié)
第3章 核心處理層
3.1 MyBatis初始化
3.1.1 建造者模式
3.1.2 BaseBuilder
3.1.3 XMLConfigBuilder
3.1.4 XMLMapperBuilder
3.1.5 XMLStatementBuilder
3.1.6 綁定Mapper接口
3.1.7 處理incomplete*集合
3.2 SqlNode&SqlSource
3.2.1 組合模式
3.2.2 OGNL表達式簡介
3.2.3 DynamicContext
3.2.4 SqlNode
3.2.5 SqlSourceBuilder
3.2.6 DynamicSqlSource
3.2.7 RawSqlSource
3.3 ResultSetHandler
3.3.1 handleResultSets()方法
3.3.2 ResultSetWrapper
3.3.3 簡單映射
3.3.4 嵌套映射
3.3.5 嵌套查詢&延遲加載
3.3.6 多結(jié)果集處理
3.3.7 游標
3.3.8 輸出類型的參數(shù)
3.4 KeyGenerator
3.4.1 Jdbc3KeyGenerator
3.4.2 SelectkeyGenerator
3.5 StatementHandler
3.5.1 RoutingStatementHandler
3.5.2 BaseStatementHandler
3.5.3 ParameterHandler
3.5.4 SimpleStatementHandler
3.5.5 PreparedStatementHandler
3.6 Executor
3.6.1 模板方法模式
3.6.2 BaseExecutor
3.6.3 SimpleExecutor
3.6.4 ReuseExecutor
3.6.5 BatchExecutor
3.6.6 CachingExecutor
3.7 接口層
3.7.1 策略模式
3.7.2 SqlSession
3.7.3 DefaultSqlSessionFactory
3.7.4 SqlSessionManager
3.8 本章小結(jié)
第4章 高級主題
4.1 插件模塊
4.1.1 責任鏈模式
4.1.2 Interceptor
4.1.3 應(yīng)用場景分析
4.2 MyBatis與Spring集成
4.2.1 Spring基本概念
4.2.2 Spring MVC介紹
4.2.3 集成環(huán)境搭建
4.2.4 Mybatis-Spring剖析
4.3 拾遺
4.3.1 應(yīng)用<sql>節(jié)點
4.3.2 OgnlUtils工具類
4.3.3 SQL語句生成器
4.3.4 動態(tài)SQL腳本插件
4.3.5 MyBatis-Generator逆向工程
4.4 本章小結(jié)
前 言
面向?qū)ο蟪绦蛟O(shè)計是企業(yè)級開發(fā)常用的設(shè)計方式,在實踐中常用的編程語言大多都是面向?qū)ο蟮木幊陶Z言。而在實際生產(chǎn)環(huán)境中常用的數(shù)據(jù)庫產(chǎn)品,如MySQL、Oracle等,都是關(guān)系型數(shù)據(jù)庫。雖然NoSQL數(shù)據(jù)庫在最近一段時間有飛速的發(fā)展,但是關(guān)系型數(shù)據(jù)庫憑借多年的發(fā)展和技術(shù)積累,依然占據(jù)著市場的主導(dǎo)地位。
MyBatis作為一個優(yōu)秀的Java持久化框架,可以幫助程序員完成ORM映射、查詢緩存等常用功能。MyBatis以其高性能、易優(yōu)化、易維護、可擴展等優(yōu)點,受到越來越多的開發(fā)人員的青睞,也有越來越多的設(shè)計人員開始將MyBatis作為其首選的Java持久化框架。
MyBatis 的前身是Apache的一個開源項目—iBatis,2010年iBatis項目由Apache基金會遷移到了Google Code,并正式更名為MyBatis。2013年11月,MyBatis遷移到Github。目前,越來越多的互聯(lián)網(wǎng)公司開始使用MyBatis,其中包括網(wǎng)易、搜狗、華為等,依賴MyBatis搭建的創(chuàng)業(yè)項目更是數(shù)不勝數(shù)。
MyBatis的亮點有很多,比如靈活的動態(tài)SQL語句、強大的ORM映射功能等,同時還提供了二級緩存等常用功能。MyBatis同時支持XML和注解兩種配置方式,幫助程序員屏蔽了近乎所有的JDBC代碼、參數(shù)設(shè)置、結(jié)果集處理等工作,極大地提升了開發(fā)效率。
MyBatis中有很多令人稱贊的功能和優(yōu)秀的設(shè)計,但至今還沒有一本書籍深入剖析MyBatis的內(nèi)部設(shè)計和實現(xiàn)細節(jié),希望本書的出現(xiàn)可以填補此項空白。
本書以MyBatis 3.4為基礎(chǔ),針對MyBatis的架構(gòu)設(shè)計和實現(xiàn)細節(jié)進行了詳細分析,其中穿插介紹了MyBatis源碼中涉及的基礎(chǔ)知識、設(shè)計模式以及筆者自己在實踐中的思考。除此之外,還分析了MyBatis插件的應(yīng)用場景和實現(xiàn)原理,介紹了MyBatis與Spring集成開發(fā)的示例和原理,以及一些實踐中的小技巧和小工具的使用。
如何閱讀本書
由于篇幅限制,本書并沒有詳細介紹Java的基礎(chǔ)知識,但為了便于讀者理解MyBatis的設(shè)計思想和實現(xiàn)細節(jié),筆者介紹了一些必需且重要的基礎(chǔ)內(nèi)容,例如涉及的多種設(shè)計模式。
本書共4章,它們互相之間的聯(lián)系并不是很強,讀者可以從頭開始閱讀,也可以選擇自己感興趣的章節(jié)進行學習。
第1章是MyBatis的快速入門,其中介紹了MyBatis出現(xiàn)的背景、與其他Java持久化框架的比較以及MyBatis的入門示例。之后介紹了MyBatis的整體架構(gòu),并簡述了MyBatis中各個模塊的基本功能。
第2章介紹MyBatis基礎(chǔ)支持層中各個模塊的功能,其中包括數(shù)據(jù)源模塊、事務(wù)管理模塊、緩存模塊、binding模塊、反射模塊、類型轉(zhuǎn)換模塊、日志模塊、資源加載模塊和解析器模塊。這些模塊相對獨立,讀者在實踐中如果遇到類似的需求,可以直接參考MyBatis的實現(xiàn)。
第3章介紹MyBatis核心處理層的主要功能,其中包括MyBatis初始化過程、動態(tài)SQL的解析過程、結(jié)果集的映射原理、SQL語句的參數(shù)綁定、KeyGenerator、StatementHandler以及Executor等組件的實現(xiàn)原理。同時,還介紹了MyBatis接口層的設(shè)計原理。
第4章介紹MyBatis插件的編寫和配置方式、運行原理以及常見的應(yīng)用場景,并分析了筆者在實踐中使用的分頁插件和分表插件的具體實現(xiàn)。之后,介紹了MyBatis與Spring集成開發(fā)的相關(guān)內(nèi)容,搭建了Spring 4.3、MyBatis 3.4、Spring MVC的集成開發(fā)環(huán)境,剖析了MyBatis-Spring中核心組件的實現(xiàn)原理。最后介紹了一些在使用MyBatis時用到的小技巧和一些小工具的使用方法。
在本書中,除了介紹MyBatis的實現(xiàn)細節(jié),還介紹了其中涉及的設(shè)計模式,可以幫助讀者了解MyBatis源碼背后的設(shè)計思想。
如果讀者在閱讀本書的過程中,發(fā)現(xiàn)任何不妥之處,請將您寶貴的意見和建議發(fā)送到郵箱xxxlxy2008@163.com,也歡迎讀者朋友通過此郵箱與筆者進行交流。
致謝
感謝電子工業(yè)出版社博文視點的陳曉猛老師,是您的辛勤工作讓本書的出版成為可能。同時還要感謝許多我不知道名字的幕后工作人員為本書付出的努力。
感謝朱碧穎、逄志強、楊俊靈、李全才、曾君實等朋友在百忙之中抽出時間對本書進行審閱和推薦。感謝米秀明、曾天寧、葛彬、楊杉、文靜宇、劉浩、楊鵬林、路恒、藤少廣等同事,幫助我解決工作中的困難。
這里特別感謝王魯老師,在軟件架構(gòu)、設(shè)計模式等方面對我的指導(dǎo)。
感謝馮玉玉、李成偉,是你們讓寫作的過程變得妙趣橫生,是你們讓我更加積極、自信,也是你們的鼓勵讓我完成了本書的寫作。
最后,特別感謝我的母親大人,謝謝您默默為我做出的犧牲和付出,您是我永遠的女神。
徐郡明
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: