没有合适的资源?快使用搜索试试~ 我知道了~
MyBatis源码分析.pdf
5星 · 超过95%的资源 需积分: 25 44 下载量 119 浏览量
2022-05-23
16:04:30
上传
评论
收藏 11.63MB PDF 举报
温馨提示
试读
309页
MyBatis源码分析.pdf
资源详情
资源评论
资源推荐
目录
第
1
章
MyBatis
入门
........................................................ 1
1.1 MyBatis 是什么 ......................................................... 1
1.2 为什么要使用 MyBatis ................................................... 2
1.2.1 使用 MyBatis 访问数据库 ................................................... 3
1.2.2 使用 JDBC 访问数据库 ...................................................... 6
1.2.3 使用 SpringJDBC 访问数据库 ................................................ 9
1.2.4 使用 Hibernate 访问数据库 ................................................ 12
1.3 如何使用 MyBatis ....................................................... 18
1.3.1 单独使用 MyBatis ......................................................... 18
1.3.2 在 Spring 中使用 MyBatis .................................................. 28
1.4 本章小结 .............................................................. 34
第
2
章
配置文件解析过程
.................................................. 35
2.1 配置文件解析过程分析 .................................................. 35
2.1.1 解析<properties>节点 .................................................... 39
2.1.2 解析<settings>节点 ...................................................... 42
2.1.3 设置<settings>内容到 Configuration 中 .................................... 61
2.1.4 解析<typeAliases>节点 ................................................... 62
2.1.5 解析<plugins>节点 ....................................................... 69
2.1.6 解析<environments>节点 .................................................. 70
2.1.7 解析<typeHandlers>节点 .................................................. 72
2.2 本章小结 .............................................................. 79
第
3
章
映射文件解析过程
.................................................. 80
3.1 映射文件解析解析入口 .................................................. 80
3.2 解析映射文件 .......................................................... 84
3.2.1 解析<cache>节点 ......................................................... 86
3.2.2 解析<cache-ref>节点 ..................................................... 93
3.2.3 解析<resultMap>节点 ..................................................... 96
3.2.4 解析<sql>节点 .......................................................... 115
3.2.5 解析 SQL 语句节点 ....................................................... 119
3.3 Mapper 接口绑定过程分析 .............................................. 137
3.4 处理未完成解析的节点 ................................................. 139
3.5 本章小结 ............................................................. 142
第
4
章
SQL
执行流程
...................................................... 143
4.1 SQL 执行入口 ......................................................... 144
4.1.1 为 Mapper 接口创建代理对象 .............................................. 144
4.1.2 执行代理逻辑 ........................................................... 146
4.2 查询语句的执行过程 ................................................... 158
4.2.1 selectOne 方法分析 ..................................................... 159
4.2.2 获取 BoundSql ........................................................... 166
4.2.3 创建 StatementHandler ................................................... 187
4.2.4 设置运行时参数到 SQL 中 ................................................. 189
4.2.5 #{}占位符的解析与参数的设置过程梳理 .................................... 194
4.2.6 处理查询结果 ........................................................... 196
4.3 更新语句的执行过程 ................................................... 231
4.3.1 更新语句执行过程全貌 ................................................... 231
4.3.2 KeyGenerator ........................................................... 236
4.3.3 处理更新结果 ........................................................... 242
4.4 SQL 执行过程总结 ..................................................... 243
4.5 本章小结 ............................................................. 244
第
5
章
内置数据源
....................................................... 245
5.1 内置数据源初始化过程 ................................................. 245
5.2 UnpooledDataSource ................................................... 248
5.2.1 初始化数据库驱动 ....................................................... 249
5.2.2 获取数据库连接 ......................................................... 250
5.3 PooledDataSource ..................................................... 252
5.3.1 辅助类介绍............................................................. 252
5.3.2 获取连接............................................................... 255
5.3.3 回收连接............................................................... 260
5.4 本章小结 ............................................................. 263
第
6
章
缓存机制
......................................................... 264
6.1 缓存类介绍 ........................................................... 264
6.1.1 PerpetualCache ......................................................... 265
6.1.2 LruCache............................................................... 267
6.1.3 BlockingCache .......................................................... 270
6.2 CacheKey ............................................................. 273
6.3 一级缓存 ............................................................. 276
6.4 二级缓存 ............................................................. 280
6.5 本章小结 ............................................................. 294
第
7
章
插件机制
......................................................... 295
7.1 插件机制原理 ......................................................... 295
7.1.1 植入插件逻辑
........................................................... 296
7.1.2 执行插件逻辑
........................................................... 300
7.2 实现一个分页插件
..................................................... 302
7.3 本章小结 ............................................................. 306
第 1 章
第 1 章 MyBatis ⼊⻔
MyBatis 是一个容易上手的持久层框架,使用者通过简单的学习即可掌握其常用特性的
用法,这也是 MyBatis 被广泛使用的原因之一。在深入分析 MyBatis 源码前,我想先向大家
介绍一下 MyBatis 的一些基础知识。本章将从三个角度向大家介绍 MyBatis,分别是 MyBatis
是什么,为什么要使用,以及如何使用。如果大家对 MyBatis 比较了解,可以跳过本章。
1.1 MyBatis 是什么
MyBatis 的前身是 iBatis,iBatis 是 Apache 软件基金会下的一个开源项目。2010 年该项
目从 Apache 基金会迁出,并改名为 MyBatis。同期,iBatis 停止维护。
MyBatis 是一种半自动化的 Java 持久层框架(persistenceframework),其通过注解或 XML
的方式将对象和 SQL 关联起来。之所以说它是半自动的,是因为和 Hibernate 等一些可自动
生成 SQL 的 ORM(ObjectRelationalMapping)框架相比,使用 MyBatis 需要用户自行维护 SQL。
维护 SQL 的工作比较繁琐,但也有好处。比如我们可控制 SQL 逻辑,可对其进行优化,以
提高效率。
一本小小的 MyBatis 源码分析书
2
1.2 为什么要使⽤ MyBatis
我们在使用 Java 程序访问数据库时,有多种可选方案。比如我们可通过编写最原始的
JDBC 代码访问数据库,或是通过 Spring 提供的 JdbcTemplate 访问数据库。除此之外,我们
还可以选择 Hibernate,亦或是本书的主角 MyBatis 等。在有多个可选项的情况下,我们为什
么选择 MyBatis 呢?要回答这个问题,我们需要将 MyBatis 与这几种框架对比一下,高下立
判。当然,技术之间一般没有高下之分。从应用场景的角度来说,符合应用场景需求的技术
才是合适的选择。接下来我们通过写代码的方式,来对比这几种数据库访问技术的优缺点,
并在最后说明 MyBatis 的适用场景。
这里先把本节所用到的一些公共类和配置贴出来,后面但凡用到这些类和配置的地方,
大家可以到这里进行查看。如下:
数据库相关配置放在了 jdbc.properties 文件中,详细内容如下:
表记录如下:
public class Article {
private Integer id;
private String title;
private String author;
private String content;
private Date createTime;
// 省略 getter/setter 和 toString
}
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/myblog?useUnicode=true ……
jdbc.username=root
jdbc.password=****
剩余308页未读,继续阅读
这个人是谁呀
- 粉丝: 6
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1