跳转至

MyBatis 3源码深度解析-江荣波

  •  MyBatis 3源码深度解析|200
  • 书名: MyBatis 3源码深度解析
  • 作者: 江荣波
  • 简介: 本书从MyBatis源码的角度分析Mapper绑定过程、SqlSession操作数据库原理、插件实现原理等,同时介绍一些MyBatis的高级用法,并挖掘MyBatis源码中使用的设计模式。本书共13章,分为MyBatis3源码篇和MyBatisSpring源码篇。第1~11章介绍MyBatis核心源码,从源码的角度分析MyBatis的实现原理,并介绍一些MyBatis的高级用法。MyBatis大多数情况下会与Spring整合使用,第12~13章介绍MyBatisSpring的实现原理,并分析MyBatisSpring模块的核心代码。本书适合掌握了MyBatis的基本用法并希望了解MyBatis底层实现的Java开发人员、架构师以及对Java开源项目感兴趣的读者阅读。
  • 出版时间 2019-10-01 00:00:00
  • ISBN: 9787302535614
  • 分类: 计算机-编程设计
  • 出版社: 清华大学出版社

高亮划线

封面

书名页

版权信息

内容简介

前言

阅读准备

内容概要

随书源码

图书勘误

致谢

第1篇 MyBatis 3源码

第1章 搭建MyBatis源码环境

1.2 环境准备

1.3 获取MyBatis源码

1.4 导入MyBatis源码到IDE

1.5 HSQLDB数据库简介

1.6 本章小结

第2章 JDBC规范详解

2.1 JDBC API简介

2.2 JDBC API中的类与接口

  • 📌 RowSet默认是一个可滚动、可更新、可序列化的结果集,而且它作为一个JavaBean组件,可以方便地在网络间传输,用于两端的数据同步。通俗来讲,RowSet就相当于数据库表数据在应用程序内存中的映射,我们所有的操作都可以直接与RowSet对象交互。RowSet与数据库之间的数据同步,作为开发人员不需要关注。 ^20-6601-6756
    • ⏱ 2024-03-27 12:53:55

2.3 Connection详解

2.4 Statement详解

2.5 ResultSet详解

2.6 DatabaseMetaData详解

2.7 JDBC事务

2.8 本章小结

第3章 MyBatis常用工具类

3.1 使用SQL类生成语句

3.2 使用ScriptRunner执行脚本

3.3 使用SqlRunner操作数据库

3.4 MetaObject详解

3.5 MetaClass详解

3.6 ObjectFactory详解

3.7 ProxyFactory详解

3.8 本章小结

第4章 MyBatis核心组件介绍

4.2 MyBatis核心组件

  • 📌 了解了MyBatis的核心组件后,我们再来了解一下使用MyBatis操作数据库的过程。4.1节中介绍MyBatis框架的基本使用时,我们使用到了SqlSession组件,它是用户层面的API。实际上SqlSession是Executor组件的外观,目的是为用户提供更友好的数据库操作接口,这是设计模式中外观模式的典型应用。真正执行SQL操作的是Executor组件,Executor可以理解为SQL执行器,它会使用StatementHandler组件对JDBC的Statement对象进行操作。当Statement类型为CallableStatement和PreparedStatement时,会通过ParameterHandler组件为参数占位符赋值。ParameterHandler组件中会根据Java类型找到对应的TypeHandler对象,TypeHandler中会通过Statement对象提供的setXXX()方法(例如setString()方法)为Statement对象中的参数占位符设置值。StatementHandler组件使用JDBC中的Statement对象与数据库完成交互后,当SQL语句类型为SELECT时,MyBatis通过ResultSetHandler组件从Statement对象中获取ResultSet对象,然后将ResultSet对象转换为Java对象。 ^37-2573-3168
    • ⏱ 2024-05-13 22:49:16

4.3 Configuration详解

4.4 Executor详解

  • 📌 MyBatis提供了3种不同的Executor,分别为SimpleExecutor、ResueExecutor、BatchExecutor,这些Executor都继承至BaseExecutor,BaseExecutor中定义的方法的执行流程及通用的处理逻辑,具体的方法由子类来实现,是典型的模板方法模式的应用。SimpleExecutor是基础的Executor,能够完成基本的增删改查操作,ResueExecutor对JDBC中的Statement对象做了缓存,当执行相同的SQL语句时,直接从缓存中取出Statement对象进行复用,避免了频繁创建和销毁Statement对象,从而提升系统性能,这是享元思想的应用。BatchExecutor则会对调用同一个Mapper执行的update、insert和delete操作,调用Statement对象的批量操作功能。另外,我们知道MyBatis支持一级缓存和二级缓存,当MyBatis开启了二级缓存功能时,会使用CachingExecutor对SimpleExecutor、ResueExecutor、BatchExecutor进行装饰,为查询操作增加二级缓存功能,这是装饰器模式的应用。接下来以一个案例介绍如何直接使用Executor组件与数据库交互,代码如下: ^39-975-1533
    • ⏱ 2024-05-13 22:58:00

4.5 MappedStatement详解

4.6 StatementHandler详解

4.7 TypeHandler详解

4.8 ParameterHandler详解

4.9 ResultSetHandler详解

4.10 本章小结

第5章 SqlSession的创建过程

5.1 XPath方式解析XML文件

5.2 Configuration实例创建过程

5.3 SqlSession实例创建过程

5.4 本章小结

第6章 SqlSession执行Mapper过程

6.1 Mapper接口的注册过程

6.2 MappedStatement注册过程

  • 📌 名(包括包名)加上方法名称。 ^53-596-1306
    • ⏱ 2024-05-14 22:10:43

6.3 Mapper方法调用过程详解

6.4 SqlSession执行Mapper过程

6.5 本章小结

第7章 MyBatis缓存

7.1 MyBatis缓存的使用

7.2 MyBatis缓存实现类

7.3 MyBatis一级缓存实现原理

7.4 MyBatis二级缓存实现原理

7.5 MyBatis使用Redis缓存

7.6 本章小结

第8章 MyBatis日志实现

8.1 Java日志体系

8.2 MyBatis日志实现

8.3 本章小结

第9章 动态SQL实现原理

9.1 动态SQL的使用

9.2 SqlSource与BoundSql详解

9.3 LanguageDriver详解

9.4 SqlNode详解

9.5 动态SQL解析过程

9.6 从源码角度分析#{}和${}的区别

9.7 本章小结

第10章 MyBatis插件原理及应用

10.1 MyBatis插件实现原理

10.2 自定义一个分页插件

10.3 自定义慢SQL统计插件

10.4 本章小结

第11章 MyBatis级联映射与懒加载

11.1 MyBatis级联映射详解

11.2 MyBatis懒加载机制

11.3 MyBatis级联映射实现原理

11.4 懒加载实现原理

11.5 本章小结

第2篇 MyBatis Spring源码

第12章 MyBatis与Spring整合案例

12.1 准备工作

12.2 MyBatis与Spring整合

12.3 用户注册案例

12.4 本章小结

第13章 MyBatis Spring的实现原理

13.2 Spring容器启动过程

13.3 Mapper动态代理对象注册过程

13.4 MyBatis整合Spring事务管理

13.5 本章小结

读书笔记

本书评论