MvBatis以封装少、高性能、可优化、高灵活度等特性成为当今最流行的Java互联网持久层框架。但遗憾的是至今却没有任何一本关于MvBatis的著作,使得初学者困难重重,而使用者也未必尽得其理,引起一些不必要的性能丢失,甚至是错误发生。因此系统全面地学习MyBatis框架十分必要,杨开振著的这本《深入浅出MyBatis技术原理与实战》谈及了它的基础应用、运行原理和插件、MyBatis-Spring项目和一些常用场景,循序渐进地讲述MvBatis的知识。作为第一本MyBatis书,本书包括但不限于以下内容:
理论结合实际,本书不单单谈及MvBatis的基础和应用,还谈及其实现的原理,包括一些设计模式也会贯穿全书,使得读者收益超过MvBatis框架本身。
如果你是初学者,本书详细解析了许多重要技能点,比如MyBatis架构、typeHandler、级联、参数、存储过程等,帮助你迅速掌握MvBatis的正确使用方法。
如果你是中高级开发者,本书着重分析的MyBatis运行原理和插件开发等,能够让你掌握MvBatis运行原理,从容应对插件的开发工作。
结合实际工作的需要,本书详细讲解了MyBatis-Spring项目以及一些常见的MyBatis开发实例,帮助读者在一线工作中用好MyBatis。
随着大数据时代的到来,Java持久层框架MyBatis已经成为越来越多企业的选择。遗憾的是,时至今日国内依然没有一本讨论MyBatis的书,这增加了初学者的学习难度,初学者往往只能基于零星的案例来学习MyBatis,无法系统地掌握MyBatis,更不用说精通了。《深入浅出MyBatis技术原理与实战》是笔者杨开振通过大量实践和研究源码后创作而成的,是国内第一本系统介绍MyBatis的著作。
本书分为3个部分,依次介绍了MyBatis的基础应用、原理及插件开发、实践应用,使读者能够由浅入深、循序渐进地掌握MyBatis技术。首先,本书在官方API的基础上完善了许多重要的论述和实例,并且给出了实操建议,帮助读者正确掌握MyBatis。其次,本书详细讲述了MyBatis的内部运行原理,并全面讨论了插件的开发。最后,本着学以致用的原则,笔者阐述了MyBatis-Spring项目和一些MyBatis开发常见的实例,使读者能够学得会,用得好。
本书不是一本味同嚼蜡的理论专著,而是一本MyBatis的实践指南,无论你是Java程序员、MyBatis开发者,还是Java持久层框架的研究者,你都能从本书中收获知识。
第1章 MyBatis简介
1.1 传统的JDBC编程
1.2 ORM模型
1.3 Hibernate
1.4 MyBatis
1.5 什么时候用MyBatis
第2章 MyBaits入门
2.1 开发环境准备
2.1.1 下载MyBatis
2.1.2 搭建开发环境
2.2 MyBatis的基本构成
2.2.1 构建SqlSessionFactory
2.2.2 创建SqlSession
2.2.3 映射器
2.3 生命周期
2.3.1 SqlSessionFactoryBuilder
2.3.2 SqlSessionFactory
2.3.3 SqlSession
2.3.4 Mapper
2.4 实例
第3章 配置
3.1 properties元素
3.1.1 property子元素
3.1.2 properties配置文件
3.1.3 程序参数传递
3.1.4 优先级
3.2 设置
3.3 别名
3.3.1 系统定义别名
3.3.2 自定义别名
3.4 typeHandler类型处理器
3.4.1 系统定义的typeHandler
3.4.2 自定义typeHandler
3.4.3 枚举类型typeHandler
3.5 ObjectFactory
3.6 插件
3.7 environments配置环境
3.7.1 概述
3.7.2 数据库事务
3.7.3 数据源
3.8 databaseIdProvider数据库厂商标识
3.8.1 使用系统默认规则
3.8.2 不使用系统默认规则
3.9 引入映射器的方法
第4章 映射器
4.1 映射器的主要元素
4.2 select 元素
4.2.1 概述
4.2.2 简易数据类型的例子
4.2.3 自动映射
4.2.4 传递多个参数
4.2.5 使用resultMap映射结果集
4.3 insert元素
4.3.1 概述
4.3.2 主键回填和自定义
4.4 update元素和delete元素
4.5 参数
4.5.1 参数配置
4.5.2 存储过程支持
4.5.3 特殊字符串替换和处理(#和$)
4.6 sql 元素
4.7 resultMap结果映射集
4.7.1 resultMap元素的构成
4.7.2 使用map存储结果集
4.7.3 使用POJO存储结果集
4.7.4 级联
4.8 缓存cache
4.8.1 系统缓存(一级缓存和二级缓存)
4.8.2 自定义缓存
第5章 动态SQL
5.1 概述
5.2 if元素
5.3 choose、when、otherwise元素
5.4 trim、where、set元素
5.5 foreach元素
5.6 test的属性
5.7 bind元素
第6章 MyBatis的解析和运行原理
6.1 涉及的技术难点简介
6.1.1 反射技术
6.1.2 JDK动态代理
6.1.3 CGLIB动态代理
6.2 构建SqlSessionFactory过程
6.2.1 构建Configuration
6.2.2 映射器的内部组成
6.2.3 构建SqlSessionFactory
6.3 SqlSession运行过程
6.3.1 映射器的动态代理
6.3.2 SqlSession下的四大对象
6.3.3 SqlSession运行总结
第7章 插件
7.1 插件接口
7.2 插件的初始化
7.3 插件的代理和反射设计
7.4 常用的工具类--MetaObject
7.5 插件开发过程和实例
7.5.1 确定需要拦截的签名
7.5.2 实现拦截方法
7.5.3 配置和运行
7.5.4 插件实例
7.6 总结
第8章 MyBatis-Spring
8.1 Spring 的基础知识
8.1.1 Spring IOC基础
8.1.2 Spring AOP基础
8.1.3 Spring事务管理
8.1.4 Spring MVC基础
8.2 MyBatis-Spring应用
8.2.1 概述
8.2.2 配置SqlSessionFactory
8.2.3 配置SqlSessionTemplate
8.2.4 配置Mapper
8.2.5 配置事务
8.3 实例
8.3.1 环境准备
8.3.2 文件目录
8.3.3 Spring配置文件
8.3.4 MyBatis框架相关配置
8.3.5 配置服务层
8.3.6 编写控制器
8.3.7 测试
8.4 总结
第9章 实用的场景
9.1 数据库BLOB字段读写
9.2 批量更新
9.3 调用存储过程
9.3.1 存储过程in和out参数的使用
9.3.2 存储过程游标
9.4 分表
9.5 分页
9.5.1 RowBounds分页
9.5.2 插件分页
9.6 上传文件到服务器
9.7 在映射中使用枚举
9.8 多对多级联
9.9 总结
附录A 数据库模型描述与级联学生关系建表语句