深入浅出Java互联网持久框架MyBatis
  • 推荐0
  • 收藏9
  • 浏览1.5K

深入浅出Java互联网持久框架MyBatis

杨开振 (作者) 

  • 书  号:978-7-121-29594-2
  • 出版日期:2016-08-23
  • 页  数:268
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 维护人:汪达文
当前已经是移动互联网时代,Java持久框架Hibernate没有办法适应高性能,灵活,大数据,可优化等要求,这时MyBatis就进入了我们的视野,随着移动互联网应用的持续发酵,Spring+MyBatis的应用已在Java互联网平台上得到大量的使用,单单在51job招聘网站中MyBatis在全国也有近万个岗位的需求,加上未在51job发布的企业,可见需求相当大,而在当今市场上却没有任何一本介绍MyBatis的书籍,为了填补这一空白本书主要介绍了Java MyBatis技术。
本书详细介绍了MyBatis的基础组成、配置、映射器、动态SQL,教会读者正确使用MyBatis,书中包含大量的实例,使读者可以参考。接着介绍了MyBatis的运行原理和插件开发并配有一个完整的插件例子。为了增加实用性,作者还介绍了MyBatis-Spring项目,使得读者能够学习到如何把MyBatis整合到Spring项目中,最后作者还将讲解一些常用实例,比如Blob字段、文件上传、批量、动态表名等实用场景,让读者能够参考和注意一些细节的问题。
本书从基础讲到底层,注重实战,原理,照顾到初中高三类读者,可以作为MyBatis的学习教程和参考技术丛书。
国内首本全面论述MyBatis的著作
不仅有对官方API的解析,更有全面的实例讲解
详细阐述MyBatis内部运行原理和插件开发
手把手教你整合开发MyBatis-Spring项目
前 言
随着手机、平板电脑等移动终端的广泛应用,移动互联网时代已经到来。在这个时代
里,构建一个高效的平台并提供服务是移动互联网的基础,在众多的网站服务中,使用Java
构建网站的不在少数。移动互联网的特点是大数据、高并发,对服务器往往要求分布式、
高性能、高灵活等,而传统模式的Java 数据库编程框架已经不再适用了。在这样的背景下,
一个Java 的持久框架MyBatis 走入了我们的世界,它以封装少、高性能、可优化、维护简
易等优点成为了目前Java 移动互联网网站服务的首选持久框架,它特别适合分布式和大数
据网络数据库的编程。
本书主要讲解了MyBatis 的应用。从目前的情况来看,国内图书市场上没有介绍
MyBatis 的书籍,有的只是官方的API 和少数的几篇博客文章,国外图书市场上的这类书
籍也是凤毛麟角,这使得系统学习MyBatis 困难重重。官方的API 只是简单介绍了MyBatis
有些什么功能和一些基本的使用方法,没有告诉我们如何用好,其中原理是什么,需要注意
哪些问题,这显然是不够的。有些博客虽然讲解得比较深入,但是内容支离破碎,没有形成
一个完整的知识体系,不易于初学者对MyBatis 进行系统学习。随着移动互联网应用的兴起,
系统掌握MyBatis 编程技巧已经成了用Java 构建移动互联网网站的必要条件。为了顺应时
代的要求,笔者写下了这本书,以期为广大需要掌握MyBatis 的开发者提供学习和参考的
资料。
阅读本书要求开发人员拥有Java 语言基础和JDBC 基础知识,对数据库也要掌握入门
知识,最好能够掌握常用的设计模式,因为在介绍MyBatis 构造时,常常涉及设计模式,
尤其是第6 章和第7 章的内容。
由于本书以讲解MyBatis 的原理为主,所以适合中高级开发人员阅读。本书分为三大部分。
第一部分是MyBatis 基础应用,主要介绍如何高效地使用MyBatis。
第1 章:MyBatis 的内容简介,告诉读者MyBatis 是什么,在何种场景下使用它。
第2 章:主要介绍MyBatis 的基础模块及其生命周期,并给出实例。
第3 章:主要介绍MyBatis 配置的主要含义和内容。
第4 章:介绍MyBatis 映射器的主要元素及其使用方法。
第5 章:介绍动态SQL,助你轻松应对大部分的SQL 场景。
第二部分是MyBatis 原理,我们将深入源码去理解MyBatis 的内部运行原理以及插件
的开发方法和技巧。
第6 章:介绍MyBatis 的解析和运行原理,我们将了解到SqlSession 的构建方法,以
及其四大对象是如何工作的。
第7 章:在第6 章的基础上着重介绍MyBatis 的插件,这里我们将学习插件的设计原
理,以及开发方法和注意的要点。
第三部分是MyBatis 的实战应用,主要讲解MyBatis 的一些实用的场景。
第8 章:介绍MyBatis-Spring,主要讲解如何在Spring 项目中集成MyBatis 应用,帮
助读者在Spring 的环境中顺利使用MyBatis。
第9 章:介绍MyBatis 的实用场景,精选一批典型且又常用的场景。详细解析每一个
场景下,开发人员需要注意避免的一些错误和性能上的损失。
MyBatis 源于2002 年的iBatis 项目,至今MyBatis 中依然有许多iBatis 的痕迹。本书
默认使用MyBatis 的版本是3.3.0,使用MyBatis-Spring 的版本是1.2.3。而历史上的iBatis
的书籍已经跟不上技术发展的步伐,于是笔者通过自己的努力和实践,在研究MyBatis 源
码的基础上,写作本书。从本书中既能学习如何使用MyBatis,也可以学习MyBatis 的原理
和应用,为国内的MyBatis 开发者提供一条系统掌握MyBatis 编程技巧的捷径,当然读者
也可以把本书作为工具书参考。在实际操作中,MyBatis 往往是结合Spring 使用的,于是
本书花费了一些篇幅讲解MyBatis-Spring 技术,笔者也会略略提到Spring 项目的内容,以
便更好地论述它们。最后笔者还将讲解一些使用频率高、参考价值大的场景,使读者能熟
练掌握MyBatis 的开发。
本书坚持实用原则,对于一些使用频率低的技术并没有提及太多,比如注解SQL、SQL
构造器等内容,提及太多只能降低你的可读性。
感谢我的公司为我提供真实的使用MyBatis 的环境,所有的程序代码都经过了调试。
感谢我的姐姐杨坚,她参与编写并通篇审校了本书,润色了那些晦涩的句子。同时也感谢
电子工业出版社的编辑们,尤其是汪达文的全程跟进。没有他们的辛苦付出,就没有本书
的成功出版。在出版本书的欣喜之余,也伴着战战兢兢,因为笔者才疏学浅,很多东西都
是从对源码的理解和实际操作中获得的,因此书中难免有疏漏之处,或有不能让读者满意
的地方。如果有困惑,读者可以发邮件到我的邮箱:ykzhen2013@163.com,也可以在我的
博客(http://blog.csdn.net/ykzhen2015)中和我讨论,还望各位同行不吝赐教。
杨开振
2016 年7 月

目录

目 录
第1 章 MyBatis 简介1
1.1 传统的JDBC 编程1
1.2 ORM 模型4
1.3 Hibernate. 4
1.4 MyBatis 9
1.5 什么时候用MyBatis12
第2 章 MyBatis 入门13
2.1 开发环境准备13
2.1.1 下载MyBatis 13
2.1.2 搭建开发环境14
2.2 MyBatis 的基本构成15
2.2.1 构建SqlSessionFactory15
2.2.2 创建SqlSession19
2.2.3 映射器21
2.3 生命周期26
2.3.1 SqlSessionFactoryBuilder27
2.3.2 SqlSessionFactory27
2.3.3 SqlSession27
2.3.4 28
2.4 实例29
第3 章 配置37
3.1 properties 元素38
3.1.1 property 子元素38
3.1.2 properties 配置文件39
3.1.3 程序参数传递39
3.1.4 优先级40
3.2 设置41
3.3 别名44
3.3.1 系统定义别名44
3.3.2 自定义别名47
3.4 typeHandler 类型处理器48
3.4.1 系统定义的typeHandler49
3.4.2 自定义typeHandler51
3.4.3 枚举类型typeHandler55
3.5 ObjectFactory62
3.6 插件65
3.7 environments 配置环境65
3.7.1 概述65
3.7.2 数据库事务66
3.7.3 数据源67
3.8 databaseIdProvider 数据库厂商标识68
3.8.1 使用系统默认规则68
3.8.2 不使用系统默认规则.69
3.9 引入映射器的方法71
第4 章 映射器73
4.1 映射器的主要元素73
4.2 select 元素74
4.2.1 概述74
4.2.2 简易数据类型的例子75
4.2.3 自动映射76
4.2.4 传递多个参数78
4.2.5 使用resultMap 映射结果集81
4.3 insert 元素82
4.3.1 概述82
4.3.2 主键回填和自定义83
4.4 update 元素和delete 元素85
4.5 参数85
4.5.1 参数配置86
4.5.2 存储过程支持86
4.5.3 特殊字符串替换和处理(#和$)87
4.6 sql 元素88
4.7 resultMap 结果映射集89
4.7.1 resultMap 元素的构成89
4.7.2 使用map 存储结果集91
4.7.3 使用POJO 存储结果集91
4.7.4 级联92
4.8 缓存cache 113
4.8.1 系统缓存(一级缓存和二级缓存)113
4.8.2 自定义缓存117
第5 章 动态SQL 119
5.1 概述119
5.2 if 元素120
5.3 choose、when、otherwise 元素120
5.4 trim、where、set 元素121
5.5 foreach 元素123
5.6 test 的属性124
5.7 bind 元素125
第6 章 MyBatis 的解析和运行原理127
6.1 涉及的技术难点简介128
6.1.1 反射技术129
6.1.2 JDK 动态代理130
6.1.3 CGLIB 动态代理133
6.2 构建SqlSessionFactory 过程134
6.2.1 构建Configuration135
6.2.2 映射器的内部组成135
6.2.3 构建SqlSessionFactory137
6.3 SqlSession 运行过程138
6.3.1 映射器的动态代理138
6.3.2 SqlSession 下的四大对象141
6.3.3 SqlSession 运行总结150
第7 章 插件152
7.1 插件接口152
7.2 插件的初始化153
7.3 插件的代理和反射设计154
7.4 常用的工具类——MetaObject 157
7.5 插件开发过程和实例159
7.5.1 确定需要拦截的签名159
7.5.2 实现拦截方法161
7.5.3 配置和运行162
7.5.4 插件实例163
7.6 总结166
第8 章 MyBatis-Spring168
8.1 Spring 的基础知识168
8.1.1 Spring IOC 基础169
8.1.2 Spring AOP 基础171
8.1.3 Spring 事务管理173
8.1.4 Spring MVC 基础179
8.2 MyBatis-Spring 应用181
8.2.1 概述181
8.2.2 配置SqlSessionFactory182
8.2.3 配置SqlSessionTemplate184
8.2.4 配置Mapper188
8.2.5 配置事务190
8.3 实例191
8.3.1 环境准备191
8.3.2 文件目录193
8.3.3 Spring 配置文件194
8.3.4 MyBatis 框架相关配置198
8.3.5 配置服务层205
8.3.6 编写控制器209
8.3.7 测试210
8.4 总结210
第9 章 实用的场景212
9.1 数据库BLOB 字段读写212
9.2 批量更新215
9.3 调用存储过程217
9.3.1 存储过程in 和out 参数的使用217
9.3.2 存储过程游标220
9.4 分表.225
9.5 分页227
9.5.1 RowBounds 分页227
9.5.2 插件分页229
9.6 上传文件到服务器239
9.7 在映射中使用枚举247
9.8 多对多级联249
9.9 总结253
附录A 数据库模型描述与级联学生关系建表语句254

读者评论

  • 书买了 找不到源码

    littelbeear发表于 2018/1/1 16:35:13
  • 希望提供源码

    东东发表于 2017/11/13 12:05:45
    • 在作者今年出的《Java EE互联网轻量级框架整合开发》,包含了这本书的大部分章节,里面提供了源代码。http://www.broadview.com.cn/book/80

      lee发表于 2017/11/30 0:26:20

图书类别

相关图书

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

李雨前 (作者)

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

¥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