1.简介

我从七月份开始阅读MyBatis源码,并在随后的40天内陆续更新了7篇文章。起初,我只是打算通过博客的形式进行分享。但在写作的过程中,发现要分析的代码太多,以至于文章篇幅特别大。在这7篇文章中,有4篇文章字数超过了1万,最长的一篇文章约有2.7万字(含代码)。考虑到超长文章对读者不太友好,以及拆分文章工作量也不小等问题。遂决定将博文整理成电子书,方便大家阅读。

经过两周紧张的排版,《一本小小的MyBatis源码分析书》诞生了。本书共7章,约300页。本书以电子书的形式发布,大家可自由的下载。下载地址如下:

百度网盘:点击下载

百度文库:审核中,这里先放上我的个人主页

CSDN: 点击下载

测试代码:GitHub

下面来看看本书章节的缩略图。

2.目录

第1章 MyBatis入门

         1.1 MyBatis是什么

         1.2 为什么要使用MyBatis

                  1.2.1 使用MyBatis访问数据库

                  1.2.2 使用JDBC访问数据库

                  1.2.3 使用SpringJDBC访问数据库

                  1.2.4 使用Hibernate访问数据库

         1.3如何使用MyBatis

                  1.3.1 单独使用MyBatis

                  1.3.2 在Spring中使用MyBatis

         1.4 本章小结

第2章 配置文件解析过程

         2.1 配置文件解析过程分析

                  2.1.1 解析节点

                  2.1.2 解析节点

                  2.1.3 设置内容到Configuration中

                  2.1.4 解析节点

                  2.1.5 解析节点

                  2.1.6 解析节点

                  2.1.7 解析节点

         2.2 本章小结

第3章 映射文件解析过程

         3.1 映射文件解析解析入口

         3.2 解析映射文件

                  3.2.1 解析节点

                  3.2.2 解析节点

                  3.2.3 解析节点

                  3.2.4 解析节点

                  3.2.5 解析SQL语句节点

         3.3 Mapper接口绑定过程分析

         3.4 处理未完成解析的节点

         3.5 本章小结

第4章 SQL执行流程

         4.1 SQL执行入口

                  4.1.1 为Mapper接口创建代理对象

                  4.1.2 执行代理逻辑

         4.2 查询语句的执行过程

                  4.2.1 selectOne方法分析

                  4.2.2 获取BoundSql

                  4.2.3 创建StatementHandler

                  4.2.4 设置运行时参数到SQL中

                  4.2.5 #{}占位符的解析与参数的设置过程梳理

                  4.2.6 处理查询结果

         4.3 更新语句的执行过程

                  4.3.1 更新语句执行过程全貌

                  4.3.2 KeyGenerator

                  4.3.3 处理更新结果

         4.4 SQL执行过程总结

         4.5 本章小结

第5章 内置数据源

         5.1 内置数据源初始化过程

         5.2 UnpooledDataSource

                  5.2.1 初始化数据库驱动

                  5.2.2 获取数据库连接

         5.3 PooledDataSource

                  5.3.1 辅助类介绍

                  5.3.2 获取连接

                  5.3.3 回收连接

         5.4 本章小结

第6章 缓存机制

         6.1 缓存类介绍

                  6.1.1 PerpetualCache

                  6.1.2 LruCache

                  6.1.3 BlockingCache

         6.2 CacheKey

         6.3 一级缓存

         6.4 二级缓存

         6.5 本章小结

第7章 插件机制

         7.1 插件机制原理

                  7.1.1 植入插件逻辑

                  7.1.2 执行插件逻辑

         7.2 实现一个分页插件

         7.3 本章小结

附录 MyBatis源码分析系列文章列表

3.写在最后

本书的排版工作耗时两周,其中40%的时间用在了内容的修改上,另外40%用在了代码的整理与排版上,最后的20%则是花在了图片和小修小改上。总的来说,整个过程还是有点辛苦的。当然,在完成排版后,成就感也是满满的。经过这次排版,深感写书不易。所以大家在日常学习过程中,应尽量买正版书予以支持。我在写MyBatis系列文章中,买了一本书作为参考,这本书是《MyBatis技术内幕》。这本书在我阅读源码的过程中,给予了不少的帮助,这里感谢该书的作者。同时,也向大家推荐这本书。另外,感谢清华出版社的王金柱编辑提供的书籍排版样例,使得我在排版的过程中可以有所参照。

最后需要说明的是,我个人工作刚满两年,不管是技术能力,还是工作经验,均处于入门水平。同时这也是我写的第一本电子书,经验不足。因此对于书中写的不好的地方,还请大家见谅,同时也希望大家多多指导。

好了,本文到此结束,感谢大家的阅读。

本文在知识共享许可协议 4.0 下发布,转载需在明显位置处注明出处
作者:田小波
本文同步发布在我的个人博客:http://www.tianxiaobo.com


本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。

MyBatis 源码分析系列文章合集的更多相关文章

  1. MyBatis 源码分析系列文章导读

    1.本文速览 本篇文章是我为接下来的 MyBatis 源码分析系列文章写的一个导读文章.本篇文章从 MyBatis 是什么(what),为什么要使用(why),以及如何使用(how)等三个角度进行了说 ...

  2. Spring AOP 源码分析系列文章导读

    1. 简介 前一段时间,我学习了 Spring IOC 容器方面的源码,并写了数篇文章对此进行讲解.在写完 Spring IOC 容器源码分析系列文章中的最后一篇后,没敢懈怠,趁热打铁,花了3天时间阅 ...

  3. Spring IOC 容器源码分析系列文章导读

    1. 简介 Spring 是一个轻量级的企业级应用开发框架,于 2004 年由 Rod Johnson 发布了 1.0 版本.经过十几年的迭代,现在的 Spring 框架已经非常成熟了.Spring ...

  4. netty源码分析系列文章

    netty源码分析系列文章 nettynetty源码阅读netty源码分析  想在年终之际将对netty研究的笔记记录下来,先看netty3,然后有时间了再写netty4的,希望对大家有所帮助,这个是 ...

  5. 【Spark SQL 源码分析系列文章】

    从决定写Spark SQL源码分析的文章,到现在一个月的时间里,陆陆续续差不多快完成了,这里也做一个整合和索引,方便大家阅读,这里给出阅读顺序 :) 第一篇 Spark SQL源码分析之核心流程 第二 ...

  6. Go合集,gRPC源码分析,算法合集

    年初时,朋友圈见到的最多的就是新的一年新的FlAG,年末时朋友圈最多的也是xxxx就要过去了,你的FLAG实现了吗? 这个公众号2016就已经创建了,但截至今年之前从来没发表过文章,现在想想以前很忙, ...

  7. MyBatis 源码分析 - 插件机制

    1.简介 一般情况下,开源框架都会提供插件或其他形式的拓展点,供开发者自行拓展.这样的好处是显而易见的,一是增加了框架的灵活性.二是开发者可以结合实际需求,对框架进行拓展,使其能够更好的工作.以 My ...

  8. MyBatis 源码分析 - 缓存原理

    1.简介 在 Web 应用中,缓存是必不可少的组件.通常我们都会用 Redis 或 memcached 等缓存中间件,拦截大量奔向数据库的请求,减轻数据库压力.作为一个重要的组件,MyBatis 自然 ...

  9. MyBatis 源码分析 - 内置数据源

    1.简介 本篇文章将向大家介绍 MyBatis 内置数据源的实现逻辑.搞懂这些数据源的实现,可使大家对数据源有更深入的认识.同时在配置这些数据源时,也会更清楚每种属性的意义和用途.因此,如果大家想知其 ...

随机推荐

  1. TreeView的三种状态,全选,全不选,半选中

    我知道的设置treeview节点的三种状态,如果不是买的控件,那么通过代码,只能设置两种状态,我知道的有三种方法, 第一种是重写treeview,第二种是把三种状态做成小图标,让节点复选框随着不同的状 ...

  2. css与dom的渲染与解析

    js阻塞文档渲染与解析那么css呢? 结论一.css:阻塞渲染,不阻塞dom解析 <head> <script> document.addEventListener('DOMC ...

  3. 《Java从入门到精通》学习总结2

    1. 在JAVA语言中对静态方法有两点规定: 在静态方法中不可以使用this关键字 在静态方法中不可以直接调用非静态方法 2. 不能将方法体内的局部变量声明为static的 3. 引用只是存放一个对象 ...

  4. beautiful模块

  5. vue如何使用rules对表单字段进行校验

    基于element-ui 1.在代码中,添加属性::rule <el-form :model="form" :rules="rules" ref=&quo ...

  6. linux 查看系统资源命令

    vmstat vmstat 1 3 #每隔一秒刷新3次 lsof lsof | more #process->file lsof | /sbin/init #file->process l ...

  7. JavaScript数据类型,构造函数

    JavaScript 的数据类型分为两类:原始类型和对象类型. JavaScript中的原始类型包括数字.字符串和布尔值 JavaScript中有两种特殊的原始值:null和undefined. Ja ...

  8. openstack-HTTP exception thrown: Maximum number of ports exceeded错误解决方案

    最近几天什么都没动无法创建云主机了,经过一番查询 1.查日志 /data/jumpserver/logs 得到错误 HTTP exception thrown: Maximum number of p ...

  9. python基础之Day21

    对象整合了操作数据的方法 1.init方法 调用类时自动触发,为对象初始化自己独有的特征 class people: def __init__(self,name,age,sex): self.nam ...

  10. 服务管理之NFS

    目录 NFS简介 1.1 nfs特点 1.4 nfs的应用场景 4. nfs管理 NFS简介 1.1 nfs特点 NFS(Network File System)即网络文件系统,是FreeBSD支持的 ...