MyBatis技术内幕
  • 推荐5
  • 收藏14
  • 浏览5.7K

MyBatis技术内幕

徐郡明 (作者) 

  • 书  号:978-7-121-31787-3
  • 出版日期:2017-06-30
  • 页  数:444
  • 开  本:16(185*235)
  • 出版状态:上市销售
纸质版 ¥79.00
本书以MyBatis 3.4为基础,针对MyBatis的架构设计和实现细节进行了详细分析,其中穿插介绍了MyBatis源码中涉及的基础知识、设计模式以及笔者自己在实践中的思考。本书共4章,从MyBatis快速入门开始,逐步分析了MyBatis的整体架构以及核心概念,对MyBatis的基础支持层、核心处理层中各个模块的功能和实现细节进行了深入的剖析。除此之外,还分析了MyBatis插件的应用场景和实现原理,介绍了MyBatis与Spring集成开发的示例和原理,以及一些实践中的小技巧和小工具的使用方法。

本书旨在为读者理解MyBatis的设计原理、阅读MyBatis源码、扩展MyBatis功能提供帮助和指导,让读者更加深入地了解MyBatis的运行原理、设计理念。希望本书能够帮助读者全面提升自身的技术能力,让读者在设计业务系统时,可以参考MyBatis的优秀设计,更好地应用MyBatis。
以MyBatis 3.4源码为基础,详细分析MyBatis的架构设计和实现细节
深入剖析MyBatis的基础层、核心层中各个模块的功能和实现细节
介绍以插件方式扩展MyBatis的原理以及与Spring集成的原理
徐郡明,武汉大学硕士,目前就职于航天科技集团旗下某研究所,主要负责政企云平台基础架构的设计和研发工作,关注多项Java开源技术的发展。
前  言


面向对象程序设计是企业级开发常用的设计方式,在实践中常用的编程语言大多都是面向对象的编程语言。而在实际生产环境中常用的数据库产品,如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,也欢迎读者朋友通过此邮箱与笔者进行交流。
致谢
感谢电子工业出版社博文视点的陈晓猛老师,是您的辛勤工作让本书的出版成为可能。同时还要感谢许多我不知道名字的幕后工作人员为本书付出的努力。
感谢朱碧颖、逄志强、杨俊灵、李全才、曾君实等朋友在百忙之中抽出时间对本书进行审阅和推荐。感谢米秀明、曾天宁、葛彬、杨杉、文静宇、刘浩、杨鹏林、路恒、藤少广等同事,帮助我解决工作中的困难。
这里特别感谢王鲁老师,在软件架构、设计模式等方面对我的指导。
感谢冯玉玉、李成伟,是你们让写作的过程变得妙趣横生,是你们让我更加积极、自信,也是你们的鼓励让我完成了本书的写作。
最后,特别感谢我的母亲大人,谢谢您默默为我做出的牺牲和付出,您是我永远的女神。

徐郡明

目录

第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 应用节点
4.3.2 OgnlUtils工具类
4.3.3 SQL语句生成器
4.3.4 动态SQL脚本插件
4.3.5 MyBatis-Generator逆向工程
4.4 本章小结

本书勘误

印次
  • 页码:19  •  行数:倒数第4行  •  印次: 1

    “这是一种低层 API” , 低层 —> 底层

    xule 提交于 2019/7/20 13:58:51
    陈晓猛 确认于 2019/7/22 7:55:05
  • 页码:23  •  行数:倒数第8行  •  印次: 1

    对于代码注释的部分:mybatis-config.xml 中”propteries标签….”应该改为”properties标签”.

    小岳叔叔 提交于 2019/4/1 17:20:32
    陈晓猛 确认于 2019/4/2 8:11:58
  • 页码:44  •  行数:10  •  印次: 1

    睡你的椒 提交于 2020/3/23 15:59:13
    陈晓猛 确认于 2020/3/24 8:20:26
  • 页码:66  •  行数:图2-18  •  印次: 1

    左边是javaType—>jdbcType是对的,右边的javaType—>jdbcType应该调过来改为jdbcType—>javaType

    小岳叔叔 提交于 2019/4/2 8:23:40
    陈晓猛 确认于 2019/7/19 8:50:28
  • 页码:67  •  行数:4-10  •  印次: 1

    第四五行的描述有误,;两句话的jdbcType和java都要对调,基本上两句话描述反了(逻辑很乱呀,相对来说66页描述是对的,到了67页描述就错了,不知道何故?)
    这两句话描述反了相应的,67页的注释也是反的.

    小岳叔叔 提交于 2019/4/2 8:27:19
    陈晓猛 确认于 2019/7/30 8:24:01

读者评论

  • 源码能吃还是能喝,买了你的书下载都不能

    JokerMa发表于 2021/10/27 22:24:21
  • 现在还有技术的书籍没有项目源码的 真的想说他妈的

    垃圾图书发表于 2021/4/29 10:43:48
  • 求问364页的第四行,new BoundSqlSqlSource(BoundSql)具体实现在哪里??

    lodahao发表于 2020/12/17 23:02:34
  • 右侧SSM.rar下载的代码不对啊,不是书中的示例代码

    edidada发表于 2020/11/18 17:02:20
  • 错误太多,严重影响阅读,咱写书虽然是为了赚钱,但能不能认真点,检验能不能仔细点

    cuixb发表于 2020/6/27 11:37:14
    • 书中的代码都不全,用到的一些方法都没有给出来。也没有提供源码的下载链接,给的下载链接下载的代码也不配套。严重影响阅读啊。

      zq发表于 2020/9/1 21:01:45

相关图书

深入集群:大型数据中心资源调度与管理

李雨前 (作者)

本书内容聚焦资源侧:集群调度和管理,非一般性的应用集群调度和管理。尽管按集群调度和集群管理两大部分来进行内容组织,实质上这两部分是一体的。集群管理是为了保障集群...

¥89.00

Netty源码剖析与应用

刘耀林 (作者)

Netty涉及多线程技术、复杂数据结构与内存管理模型,它运用了各种设计模式及一些TCP的底层技术。本书对这些难点一一进行攻破,让读者能快速掌握相关知识。 本书...

¥62.30

架构解密:从分布式到微服务(第2版)

吴治辉 (作者)

微服务、云原生、Kubernetes、Service Mesh是分布式领域的热点技术,它们并不是凭空出现的,一定继承了某些“前辈”的优点。我们不仅要了解这些技术...

 

趣谈网络协议

刘超 (作者)

网络协议是每个程序员入门的必修课,但是完全掌握网络协议知识并进行实际应用却并非易事。在本书中,作者将结合自己从业多年的“泣血”经验,以通俗易懂、更加贴近日常生活...

¥108.00

大型系统应用架构实战:部署、容灾、性能优化

李彦超 郭东白 陈禹 谢松林 周志伟 桑植 (作者)

本书理论与实战相结合,以AliExpress 网站为基础,全面介绍大型系统的总体技术方案、全球区域化部署技术、全球网络调度技术、性能优化,以及SRE 在AliE...

 

Java微服务测试:基于Arquillian、Hoverfly、AssertJ、JUnit、Selenium与Mockito

Alex Soto Bueno, Jason Porter, Andy Gumbrecht (作者) 刘梦馨 (译者)

本书从实战出发,介绍微服务架构所带来的测试方面的挑战,以及如何利用新的技术来应对这些挑战。通过本书,读者可以学会如何编写微服务架构下的单元测试、组件测试、集成测...

¥89.00