前言
自2013年起,我开始带领团队开发项目,公司此前使用的是一套深度集成的Spring、Struts和 Hibernate 框架,这套重量级框架显然已经不适合用在全新的项目中。当时使用的 Hibernate还是较早的版本,在项目的业务层需要拼接大量的SQL和HQL才能进行数据库操作。综合多方面因素,我决定选择其他持久化框架进行项目开发。因为MyBatis SQL和代码分离的方式以及动态SQL的强大功能,加之其在对查询结果进行映射处理等方面具有显著优点,因此,我与MyBatis开始结缘。
为了提高查询效率,通常会采用物理分页,然而MyBatis只能支持内存分页。若想让MyBatis支持物理分页,只能通过基于拦截器的插件来实现。当时,已有的 MyBatis分页插件都不适用于公司已经开发了大半的项目,因此我有了自己写一个分页插件的想法。完成后的分页插件(PageHelper)能很方便地实现对MyBatis查询方法的分页。后来,我在 CSDN 和开源中国的博客中分享了代码,并且详细说明了实现原理。在后续更新插件的一篇博客评论中,红薯(开源中国创始人)说:“应该把代码放到git.oschina.net中,放网盘很不专业哦!”因为这句话,我便踏入了开源的世界。
由于PageHelper分页插件有越来越多人使用,因而有很多网友通过留言、私信、邮件等方式和我讨论MyBatis的相关问题。为了解决网友的问题以及完善分页插件的功能,我深入学习了 MyBatis 的源码,通过不断的学习,不仅从深层次了解了各种问题的产生原因,对 MyBatis的理解也逐渐加深。2014年11月,我利用闲暇时间又开发了一个新的开源项目:MyBatis通用Mapper,它实现了MyBatis单表增、删、改、查的基本方法,能够帮助开发人员节省大量时间。
这几年来,我一直在博客上面和大家分享MyBatis的相关内容,在这期间和网友交流解决的问题有很多是重复的,也有很多都是基础的。现在已有的MyBatis学习途径提供给大家的知识,有一些比较深奥不适合初学者,有一些比较基础却不全面。为了让读者比较容易地全面掌握MyBatis的相关知识,这本书得以诞生,本书将通过全面完整的大量示例,让读者轻松且全面地掌握MyBatis。
阅读准备
在开始学习之前,需要准备好如下的开发环境。
· JDK1.6及以上版本。
· MyBatis 3.3.0版本。
· MySQL数据库。
· Eclipse 4及以上版本。
· Apache Maven构建工具。
本书内容
全书共11章,每一章的具体内容如下。
第1章 MyBatis入门
本章先简单介绍了 MyBatis 的发展历史和特点,然后通过一步步的操作搭建了一个学习MyBatis的基础环境,这个开发环境也是学习后续几个章节的基础。
第2章 MyBatis XML方式的基本用法
本章设定了一个简单的权限控制需求,使用MyBatis XML方式实现了数据库中一个表的常规操作。在查询方面,通过根据主键查询和查询全部两个方法让读者在学会使用 MyBatis查询方法的同时,还深入了解MyBatis返回值的设置原理。在增、删、改方面提供了大量详细的示例,这些示例覆盖了MyBatis基本用法的方方面面。
第3章 MyBatis注解方式的基本用法
虽然 XML 方式是主流,但是仍然有许多公司选择了注解方式,因此本章非常适合使用注解方式的读者。本章使用注解方式几乎实现了同 XML 方式类似的全部方法,包含许多常用注解的基本用法。对于初学者来说,即使不使用注解方式,通过本章和第 2 章的对比也可以对MyBatis有更深的了解。
第4章 MyBatis动态SQL
本章详细介绍了 MyBatis 最强大的动态 SQL 功能,通过丰富的示例讲解了各种动态 SQL的用法,为动态 SQL 中可能出现的问题提供了最佳实践方案,还提供了动态 SQL 中常用的OGNL用法。
第5章 MyBatis代码生成器
本章介绍的 MyBatis 代码生成器可以减轻基本用法中最繁重的那部分书写工作带来的压力。通过本章的学习,可以使用代码生成器快速生成大量基础的方法,让大家更专注于业务代码的开发,从枯燥的基础编码中解脱出来。
第6章 MyBatis高级查询
本章介绍了MyBatis中的高级结果映射,包括一对一映射、一对多映射和鉴别器映射。通过循序渐进的代码示例让读者轻松地学会使用MyBatis中最高级的结果映射。本章还通过全面的示例讲解了存储过程的用法和类型处理器的用法。
第7章 MyBatis缓存配置
本章讲解了MyBatis缓存配置的相关内容,提供了EhCache缓存和Redis缓存的集成方法。虽然二级缓存功能强大,但是使用不当很容易产生脏数据。本章针对脏数据的产生提供了最佳解决方案,并且介绍了二级缓存适用的场景。
第8章 MyBatis插件开发
本章介绍了MyBatis强大的扩展能力,利用插件可以很方便地在运行时改变MyBatis的行为。通过两个插件示例让读者初窥门径,结合第11章的内容可以让读者开发出适合自己的插件。
第9章 Spring集成MyBatis
本章介绍了最流行的轻量级框架Spring集成MyBatis的方法,通过一步步操作从零开始配置,搭建一个基本的Spring、Spring MVC、MyBatis开发环境。
第10章 Spring Boot集成MyBatis
本章介绍了最流行的微服务框架Spring Boot集成MyBatis的方法,通过MyBatis官方提供的Starter可以很方便地进行集成。同时,本章对Starter中的配置做了简单的介绍,可以满足读者对MyBatis各项配置方面的需要。
第11章 MyBatis开源项目
本章是一扇通往开源世界的大门,也是一扇通往 MyBatis源码学习的大门。从 Git 入门到GitHub入门,读者可以学会使用最流行的分布式版本控制系统和源代码托管服务。通过一段代码让大家了解MyBatis中的一部分关键类,通过代码包讲解可以了解MyBatis每个包中所含的功能。最后通过MyBatis丰富的测试用例为读者提供更多更有用的学习内容。
致谢
从决定写书,到这本书能够出版,中间经历了很多,因此深感来之不易。在这个过程中,要感谢所有为本书做出过贡献的人。感谢我的父母对我事业的默默支持。感谢我的妻子参与了本书的审校工作,给我提供了许多宝贵意见。感谢我的朋友黄勇、熔岩、杨新伦、悠然在百忙之中抽出时间为我的新书作序推荐。感谢博文视点的策划编辑孙奇俏的持续跟进和大力协助,同时感谢电子工业出版社和博文视点的其他老师给予本书的专业意见。最后,感谢每一位阅读本书的读者,希望本书能给您带来帮助。衷心感谢大家。
联系作者
由衷地感谢大家购买此书,希望大家会喜欢,也希望这本书能够为各位读者带来所希望获得的知识。虽然我已经非常细心地检查书中所提到的所有内容,但仍有可能存在疏漏,若大家在阅读过程中发现错误,在此我先表示歉意。欢迎各位读者对本书的内容和相关源代码发表意见和评论。大家可以通过我的个人邮箱 abel533@gmail.com 与我取得联系,我会一一解答每个人的疑惑。
本书资源
扫码或输入地址http://mybatis.tk进入MyBatis技术网站。网站中提供了大量MyBatis的相关内容,同时可下载本书相关资源。