發表於2024-11-27
詳細分析MyBatis 3.4源碼,並融入瞭作者對MyBatis架構設計的理解,還介紹以插件方式擴展MyBatis的原理以及與Spring集成的原理,跟著作者一起去探究MyBatis 的技術內幕吧
本書以MyBatis 3.4為基礎,針對MyBatis的架構設計和實現細節進行瞭詳細分析,其中穿插介紹瞭MyBatis源碼中涉及的基礎知識、設計模式以及筆者自己在實踐中的思考。本書共4章,從MyBatis快速入門開始,逐步分析瞭MyBatis的整體架構以及核心概念,對MyBatis的基礎支持層、核心處理層中各個模塊的功能和實現細節進行瞭深入的剖析。除此之外,還分析瞭MyBatis插件的應用場景和實現原理,介紹瞭MyBatis與Spring集成開發的示例和原理,以及一些實踐中的小技巧和小工具的使用方法。本書旨在為讀者理解MyBatis的設計原理、閱讀MyBatis源碼、擴展MyBatis功能提供幫助和指導,讓讀者更加深入地瞭解MyBatis的運行原理、設計理念。希望本書能夠幫助讀者全麵提升自身的技術能力,讓讀者在設計業務係統時,可以參考MyBatis的優秀設計,更好地應用MyBatis。
徐郡明,武漢大學碩士,目前就職於航天科技集團旗下某研究所,主要負責政企雲平颱基礎架構的設計和研發工作,關注多項Java開源技術的發展。
《MyBatis技術內幕》深入淺齣地講解瞭MyBatis的底層原理,清晰的寫作思路、翔實的內容讓我受益匪淺,這是一本優秀的進階書籍。
——中量財富(北京)策略研發中心總經理 硃碧穎
MyBatis現在已經是Java企業級開發中的主流框架之一。《MyBatis技術內幕》全麵地剖析瞭MyBatis的架構設計,同時作者也分享瞭很多實踐經驗,值得一讀。
——小米科技高級研發工程師 逄誌強
《MyBatis技術內幕》深入分析瞭MyBatis的設計思想,幫助讀者瞭解MyBatis的運行原理,作者分析源碼時思路清晰、講解到位,是一本非常難得的好書。
——華為高級研發工程師 楊俊靈
《MyBatis技術內幕》展示瞭MyBatis框架的全景,其中特彆喜歡作者將設計模式的講解與MyBatis源碼剖析相結閤的寫作方式,讓我們不僅瞭解瞭設計模式的概念,還學習到瞭這些模式的*佳實踐。
——搜狗高級開發工程師 李全纔
我特彆喜歡著名作傢侯捷說過的一句話:“源碼麵前,瞭無秘密”。《MyBatis技術內幕》可以讓讀者深入透徹地理解MyBatis內部結構。對於Java程序員來說,是一本不可錯過的佳作。
——微醫集團Java高級研發工程師 曾君實
第1章 MyBatis快速入門
1.1 ORM簡介
1.2 常見持久化框架
1.3 MyBatis示例
1.4 MyBatis整體架構
1.4.1 基礎支持層
1.4.2 核心處理層
1.4.3 接口層
1.5 本章小結
第2章 基礎支持層
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 類型轉換
2.3.1 TypeHandler
2.3.2 TypeHandlerRegistry
2.3.3 TypeAliasRegistry
2.4 日誌模塊
2.4.1 適配器模式
2.4.2 日誌適配器
2.4.3 代理模式與JDK動態代理
2.4.4 JDBC調試
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接口及其實現
2.9.3 CacheKey
2.10 本章小結
第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 多結果集處理
3.3.7 遊標
3.3.8 輸齣類型的參數
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 本章小結
第4章 高級主題
4.1 插件模塊
4.1.1 責任鏈模式
4.1.2 Interceptor
4.1.3 應用場景分析
4.2 MyBatis與Spring集成
4.2.1 Spring基本概念
4.2.2 Spring MVC介紹
4.2.3 集成環境搭建
4.2.4 Mybatis-Spring剖析
4.3 拾遺
4.3.1 應用<sql>節點
4.3.2 OgnlUtils工具類
4.3.3 SQL語句生成器
4.3.4 動態SQL腳本插件
4.3.5 MyBatis-Generator逆嚮工程
4.4 本章小結
前 言
麵嚮對象程序設計是企業級開發常用的設計方式,在實踐中常用的編程語言大多都是麵嚮對象的編程語言。而在實際生産環境中常用的數據庫産品,如MySQL、Oracle等,都是關係型數據庫。雖然NoSQL數據庫在最近一段時間有飛速的發展,但是關係型數據庫憑藉多年的發展和技術積纍,依然占據著市場的主導地位。
MyBatis作為一個優秀的Java持久化框架,可以幫助程序員完成ORM映射、查詢緩存等常用功能。MyBatis以其高性能、易優化、易維護、可擴展等優點,受到越來越多的開發人員的青睞,也有越來越多的設計人員開始將MyBatis作為其首選的Java持久化框架。
MyBatis 的前身是Apache的一個開源項目—iBatis,2010年iBatis項目由Apache基金會遷移到瞭Google Code,並正式更名為MyBatis。2013年11月,MyBatis遷移到Github。目前,越來越多的互聯網公司開始使用MyBatis,其中包括網易、搜狗、華為等,依賴MyBatis搭建的創業項目更是數不勝數。
MyBatis的亮點有很多,比如靈活的動態SQL語句、強大的ORM映射功能等,同時還提供瞭二級緩存等常用功能。MyBatis同時支持XML和注解兩種配置方式,幫助程序員屏蔽瞭近乎所有的JDBC代碼、參數設置、結果集處理等工作,極大地提升瞭開發效率。
MyBatis中有很多令人稱贊的功能和優秀的設計,但至今還沒有一本書籍深入剖析MyBatis的內部設計和實現細節,希望本書的齣現可以填補此項空白。
本書以MyBatis 3.4為基礎,針對MyBatis的架構設計和實現細節進行瞭詳細分析,其中穿插介紹瞭MyBatis源碼中涉及的基礎知識、設計模式以及筆者自己在實踐中的思考。除此之外,還分析瞭MyBatis插件的應用場景和實現原理,介紹瞭MyBatis與Spring集成開發的示例和原理,以及一些實踐中的小技巧和小工具的使用。
如何閱讀本書
由於篇幅限製,本書並沒有詳細介紹Java的基礎知識,但為瞭便於讀者理解MyBatis的設計思想和實現細節,筆者介紹瞭一些必需且重要的基礎內容,例如涉及的多種設計模式。
本書共4章,它們互相之間的聯係並不是很強,讀者可以從頭開始閱讀,也可以選擇自己感興趣的章節進行學習。
第1章是MyBatis的快速入門,其中介紹瞭MyBatis齣現的背景、與其他Java持久化框架的比較以及MyBatis的入門示例。之後介紹瞭MyBatis的整體架構,並簡述瞭MyBatis中各個模塊的基本功能。
第2章介紹MyBatis基礎支持層中各個模塊的功能,其中包括數據源模塊、事務管理模塊、緩存模塊、binding模塊、反射模塊、類型轉換模塊、日誌模塊、資源加載模塊和解析器模塊。這些模塊相對獨立,讀者在實踐中如果遇到類似的需求,可以直接參考MyBatis的實現。
第3章介紹MyBatis核心處理層的主要功能,其中包括MyBatis初始化過程、動態SQL的解析過程、結果集的映射原理、SQL語句的參數綁定、KeyGenerator、StatementHandler以及Executor等組件的實現原理。同時,還介紹瞭MyBatis接口層的設計原理。
第4章介紹MyBatis插件的編寫和配置方式、運行原理以及常見的應用場景,並分析瞭筆者在實踐中使用的分頁插件和分錶插件的具體實現。之後,介紹瞭MyBatis與Spring集成開發的相關內容,搭建瞭Spring 4.3、MyBatis 3.4、Spring MVC的集成開發環境,剖析瞭MyBatis-Spring中核心組件的實現原理。最後介紹瞭一些在使用MyBatis時用到的小技巧和一些小工具的使用方法。
在本書中,除瞭介紹MyBatis的實現細節,還介紹瞭其中涉及的設計模式,可以幫助讀者瞭解MyBatis源碼背後的設計思想。
如果讀者在閱讀本書的過程中,發現任何不妥之處,請將您寶貴的意見和建議發送到郵箱xxxlxy2008@163.com,也歡迎讀者朋友通過此郵箱與筆者進行交流。
緻謝
感謝電子工業齣版社博文視點的陳曉猛老師,是您的辛勤工作讓本書的齣版成為可能。同時還要感謝許多我不知道名字的幕後工作人員為本書付齣的努力。
感謝硃碧穎、逄誌強、楊俊靈、李全纔、曾君實等朋友在百忙之中抽齣時間對本書進行審閱和推薦。感謝米秀明、曾天寜、葛彬、楊杉、文靜宇、劉浩、楊鵬林、路恒、藤少廣等同事,幫助我解決工作中的睏難。
這裏特彆感謝王魯老師,在軟件架構、設計模式等方麵對我的指導。
感謝馮玉玉、李成偉,是你們讓寫作的過程變得妙趣橫生,是你們讓我更加積極、自信,也是你們的鼓勵讓我完成瞭本書的寫作。
最後,特彆感謝我的母親大人,謝謝您默默為我做齣的犧牲和付齣,您是我永遠的女神。
徐郡明
MyBatis技術內幕 下載 mobi pdf epub txt 電子書 格式 2024
MyBatis技術內幕 下載 mobi epub pdf 電子書很不錯 還沒開始看
評分好書,留下來慢慢看
評分其實用的可能不會多,之前用過
評分很好,待細細看來!
評分不錯!!!!!!!
評分東西很好,活動很給力,非常好,希望以後多點優惠吧
評分紙質很好,質量不錯,和預期的一樣。
評分看完另一本再拆
評分源碼剖析,建議有經驗的人看。
MyBatis技術內幕 mobi epub pdf txt 電子書 格式下載 2024