描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121317873
详细分析MyBatis 3.4源码,并融入了作者对MyBatis架构设计的理解,还介绍以插件方式扩展MyBatis的原理以及与Spring集成的原理,跟着作者一起去探究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源码背后的设计思想。
如果读者在阅读本书的过程中,发现任何不妥之处,请将您宝贵的意见和建议发送到邮箱[email protected],也欢迎读者朋友通过此邮箱与笔者进行交流。
致谢
感谢电子工业出版社博文视点的陈晓猛老师,是您的辛勤工作让本书的出版成为可能。同时还要感谢许多我不知道名字的幕后工作人员为本书付出的努力。
感谢朱碧颖、逄志强、杨俊灵、李全才、曾君实等朋友在百忙之中抽出时间对本书进行审阅和推荐。感谢米秀明、曾天宁、葛彬、杨杉、文静宇、刘浩、杨鹏林、路恒、藤少广等同事,帮助我解决工作中的困难。
这里特别感谢王鲁老师,在软件架构、设计模式等方面对我的指导。
感谢冯玉玉、李成伟,是你们让写作的过程变得妙趣横生,是你们让我更加积极、自信,也是你们的鼓励让我完成了本书的写作。
后,特别感谢我的母亲大人,谢谢您默默为我做出的牺牲和付出,您是我永远的女神。
徐郡明
《MyBatis技术内幕》深入浅出地讲解了MyBatis的底层原理,清晰的写作思路、翔实的内容让我受益匪浅,这是一本优秀的进阶书籍。
——中量财富(北京)策略研发中心总经理 朱碧颖
MyBatis现在已经是Java企业级开发中的主流框架之一。《MyBatis技术内幕》全面地剖析了MyBatis的架构设计,同时作者也分享了很多实践经验,值得一读。
——小米科技高级研发工程师 逄志强
《MyBatis技术内幕》深入分析了MyBatis的设计思想,帮助读者了解MyBatis的运行原理,作者分析源码时思路清晰、讲解到位,是一本非常难得的好书。
——华为高级研发工程师 杨俊灵
《MyBatis技术内幕》展示了MyBatis框架的全景,其中特别喜欢作者将设计模式的讲解与MyBatis源码剖析相结合的写作方式,让我们不仅了解了设计模式的概念,还学习到了这些模式的*实践。
——搜狗高级开发工程师 李全才
我特别喜欢著名作家侯捷说过的一句话:“源码面前,了无秘密”。《MyBatis技术内幕》可以让读者深入透彻地理解MyBatis内部结构。对于Java程序员来说,是一本不可错过的佳作。
——微医集团Java高级研发工程师 曾君实
评论
还没有评论。