本書以MyBatis 3.4為基礎(chǔ),針對(duì)MyBatis的架構(gòu)設(shè)計(jì)和實(shí)現(xiàn)細(xì)節(jié)進(jìn)行了詳細(xì)分析,其中穿插介紹了MyBatis源碼中涉及的基礎(chǔ)知識(shí)、設(shè)計(jì)模式以及筆者自己在實(shí)踐中的思考。本書共4章,從MyBatis快速入門開(kāi)始,逐步分析了MyBatis的整體架構(gòu)以及核心概念,對(duì)MyBatis的基礎(chǔ)支持層、核心處理層中各個(gè)模塊的功能和實(shí)現(xiàn)細(xì)節(jié)進(jìn)行了深入的剖析。除此之外,還分析了MyBatis插件的應(yīng)用場(chǎng)景和實(shí)現(xiàn)原理,介紹了MyBatis與Spring集成開(kāi)發(fā)的示例和原理,以及一些實(shí)踐中的小技巧和小工具的使用方法。本書旨在為讀者理解MyBatis的設(shè)計(jì)原理、閱讀MyBatis源碼、擴(kuò)展MyBatis功能提供幫助和指導(dǎo),讓讀者更加深入地了解MyBatis的運(yùn)行原理、設(shè)計(jì)理念。希望本書能夠幫助讀者全面提升自身的技術(shù)能力,讓讀者在設(shè)計(jì)業(yè)務(wù)系統(tǒng)時(shí),可以參考MyBatis的優(yōu)秀設(shè)計(jì),更好地應(yīng)用MyBatis。
詳細(xì)分析MyBatis 3.4源碼,并融入了作者對(duì)MyBatis架構(gòu)設(shè)計(jì)的理解,還介紹以插件方式擴(kuò)展MyBatis的原理以及與Spring集成的原理,跟著作者一起去探究MyBatis 的技術(shù)內(nèi)幕吧
徐郡明,武漢大學(xué)碩士,目前就職于航天科技集團(tuán)旗下某研究所,主要負(fù)責(zé)政企云平臺(tái)基礎(chǔ)架構(gòu)的設(shè)計(jì)和研發(fā)工作,關(guān)注多項(xiàng)Java開(kāi)源技術(shù)的發(fā)展。
第1章 MyBatis快速入門
1.1 ORM簡(jiǎn)介
1.2 常見(jiàn)持久化框架
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簡(jiǎn)介
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動(dòng)態(tài)代理
2.4.4 JDBC調(diào)試
2.5 資源加載
2.5.1 類加載器簡(jiǎn)介
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接口及其實(shí)現(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表達(dá)式簡(jiǎn)介
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 簡(jiǎn)單映射
3.3.4 嵌套映射
3.3.5 嵌套查詢&延遲加載
3.3.6 多結(jié)果集處理
3.3.7 游標(biāo)
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章 高級(jí)主題
4.1 插件模塊
4.1.1 責(zé)任鏈模式
4.1.2 Interceptor
4.1.3 應(yīng)用場(chǎ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é)點(diǎn)
4.3.2 OgnlUtils工具類
4.3.3 SQL語(yǔ)句生成器
4.3.4 動(dòng)態(tài)SQL腳本插件
4.3.5 MyBatis-Generator逆向工程
4.4 本章小結(jié)