乐趣区

关于学习笔记:阿里p8私藏MyBatis笔记从入门到精通纵享源码细节

前言
越来越多的企业曾经将 MyBatis 应用到了正式的生产环境,我认为风行的起因就在于绝大部分我的项目都是面向表构造编程的,把 Java 对象仅当成数据容器,查问和模型变更都设计在一张表上,所谓业务逻辑就是一堆增删改查的 sql 汇合,因而 Mybatis 用起来十分不便。

为什么要学 MyBatis?
除了我下面说的目前 MyBatis 在国内十分风行外,还有以下几点:

①学好 MyBatis 能很好地帮忙咱们解决数据层开发的问题;

②MyBatis 源码中有很多设计模式和并发编程的技巧,学好源码对晋升编码能力有很大的帮忙;

③最初,Mybatis 源码也是大厂面试的常常问的点。

基于上述情况,本次将给大家分享阿里 p8 私藏 MyBatis 笔记,帮忙大家由浅入深地学习 MyBatis 相干常识,纵享源码细节,让开发者不仅知其然,更知其所以然。

注:因为内容较多,本次将展现局部,如果看得不过瘾想更加深刻地理解本笔记彻底把握

本文分为两局部,然而我想反套路来一波,首先给大家展现一下源码,再展现 MyBatis 整体学习内容,不多 bb,间接上了。
![上传中 …]()
阿里 p8 私藏 MyBatis 笔记,从入门到精通,纵享源码细节
A:精进 MyBatis 源码剖析 – 整体架构
①整体架构

我的项目构造
整体架构
根底反对层
外围解决层
接口层

阿里 p8 私藏 MyBatis 笔记,从入门到精通,纵享源码细节
B:精进 MyBatis 源码剖析 – 根底反对层
①根底反对层

解析器模块
反射模块
异样模块
数据源模块
事务模块
缓存模块
类型模块
IO 模块
日志模块
注解模块
Binding 模块

阿里 p8 私藏 MyBatis 笔记,从入门到精通,纵享源码细节
C:精进 MyBatis 源码剖析 – MyBatis 初始化(一)之加载 mybatis-config.xml
①MyBatis 的初始化

②初始化(一)之加载 mybatis-config.xml

SqlSessionFactoryBuilder
XMLConfigBuilder
Configuration

阿里 p8 私藏 MyBatis 笔记,从入门到精通,纵享源码细节
D:精进 MyBatis 源码剖析 – MyBatis 初始化(二)之加载 Mapper 接口与 XML 映射文件
①MyBatis 的初始化

②初始化(二)之加载 Mapper 接口与映射文件

解析入口
MapperAnnotationBuilder
XMLMapperBuilder
XMLStatementBuilder
MapperBuilderAssistant
RequestMapping
ResultMap
MappedStatement

阿里 p8 私藏 MyBatis 笔记,从入门到精通,纵享源码细节
E:精进 MyBatis 源码剖析 – MyBatis 初始化(三)之 SQL 初始化(上)
①MyBatis 的初始化

②初始化(三)之 SQL 初始化(上)

LanguageDriver
XMLScriptBuilder
NodeHandler
DynamicContext
SqlNode
OgnlCache

阿里 p8 私藏 MyBatis 笔记,从入门到精通,纵享源码细节
F:精进 MyBatis 源码剖析 – MyBatis 初始化(四)之 SQL 初始化(下)
①MyBatis 的初始化

②初始化(四)之 SQL 初始化(下)

SqlSourceBuilder
ParameterExpression
ParameterMapping
SqlSource
BoundSql
DefaultParameterHandler

阿里 p8 私藏 MyBatis 笔记,从入门到精通,纵享源码细节
G:精尽 MyBatis 源码剖析 – SQL 执行过程(一)之 Executor
①MyBatis 的 SQL 执行过程

②SQL 执行过程(一)之 Executor

Executor
BaseExecutor
SimpleExecutor
ReuseExecutor
BatchExecutor
二级缓存
Executor 在哪被创立

阿里 p8 私藏 MyBatis 笔记,从入门到精通,纵享源码细节
H:精尽 MyBatis 源码剖析 – SQL 执行过程(二)之 StatementHandler
①MyBatis 的 SQL 执行过程

②SQL 执行过程(二)之 StatementHandler

StatementHandler
RoutingStatementHandler
BaseStatementHandler
SimpleStatementHandler
PreparedStatementHandler
CallableStatementHandler
KeyGenerator
Jdbc3KeyGenerator
SelectKeyGenerator
NoKeyGenerator
阿里 p8 私藏 MyBatis 笔记,从入门到精通,纵享源码细节
I:精尽 MyBatis 源码剖析 – SQL 执行过程(三)之 ResultSetHandler
①MyBatis 的 SQL 执行过程

②SQL 执行过程(三)之 ResultSetHandler

ResultSetWrapper
ResultSetHandler
DefaultResultSetHandler
阿里 p8 私藏 MyBatis 笔记,从入门到精通,纵享源码细节
J:精尽 MyBatis 源码剖析 – SQL 执行过程(四)之提早加载
①MyBatis 的 SQL 执行过程

②SQL 执行过程(四)之提早加载

ResultLoader
ResultExtractor
ResultLoaderMap
ProxyFactory
JavassistProxyFactory
CglibProxyFactory

阿里 p8 私藏 MyBatis 笔记,从入门到精通,纵享源码细节
K:精尽 MyBatis 源码剖析 – SqlSession 会话与 SQL 执行入口
①SqlSession 会话与 SQL 执行入口

SqlSessionFactoryBuilder
DefaultSqlSessionFactory
DefaultSqlSession
MapperMethod
阿里 p8 私藏 MyBatis 笔记,从入门到精通,纵享源码细节
O:精尽 MyBatis 源码剖析 – 插件机制
①插件机制

植入插件逻辑
分页插件示例
Interceptor
Invocation
Plugin
InterceptorChain
阿里 p8 私藏 MyBatis 笔记,从入门到精通,纵享源码细节
P:精尽 MyBatis 源码剖析 – MyBatis-Spring 源码剖析
①配置示例

②SqlSessionFactoryBean

③MapperFactoryBean

④SqlSessionDaoSupport

⑤MapperScannerConfigurer

⑥ClassPathMapperScanner

⑦@MapperScan 注解

⑧自定义 <mybatis:scan /> 标签

⑨SqlSessionTemplate

⑩SqlSessionHolder

⑪SqlSessionUtils

⑫SqlSessionSynchronization

阿里 p8 私藏 MyBatis 笔记,从入门到精通,纵享源码细节
Q:精尽 MyBatis 源码剖析 – Spring-Boot-Starter 源码剖析
①配置示例

②MybatisProperties

③SpringBootVFS

④MybatisAutoConfiguration

⑤构造方法

afterPropertiesSet 办法
sqlSessionFactory 办法
sqlSessionTemplate 办法
MapperScannerRegistrarNotFoundConfiguration
AutoConfiguredMapperScannerRegistrar

⑥spring.factories 文件

阿里 p8 私藏 MyBatis 笔记,从入门到精通,纵享源码细节
A:MyBatis 疾速入门
为什么须要 ORM 框架?
阿里 p8 私藏 MyBatis 笔记,从入门到精通,纵享源码细节
MyBatis 疾速入门
阿里 p8 私藏 MyBatis 笔记,从入门到精通,纵享源码细节
B:MyBatis 开发要点
轻松把握要点,你将分明地晓得:

①到底是 resultType 还是 resultMap?

②如何传递多个参数?

③如何获取主键?

④理解 SQL 元素和 SQL 的参数,动静 SQL,代码生成器,关联查问,缓存等常识。

阿里 p8 私藏 MyBatis 笔记,从入门到精通,纵享源码细节
C:MyBatis 源码概述
初探源码,为当前深刻学习 MyBatis 源码做好铺垫,从这里你将学习到:

①怎么下载 MyBatis 源码

②源码架构剖析

③外观模式(门面模式)

④面向对象设计须要遵循的六大设计准则

阿里 p8 私藏 MyBatis 笔记,从入门到精通,纵享源码细节
D:日志模块剖析
MyBatis 没有提供日志的实现类,须要接入第三方的日志组件,但第三方日志组件都有各自的 Log 级别,且各不相同,而 MyBatis 对立提供了 trace、debug、warn、error 四个级别。

因而,你须要把握以下 5 点:

①日志模块需要剖析

②适配器模式

③怎么实现优先加载日志组件?

④代理模式和动静代理

⑤优雅的加强日志性能

阿里 p8 私藏 MyBatis 笔记,从入门到精通,纵享源码细节
E:数据源模块剖析
数据源模块重点解说数据源的创立和数据库连接池的源码剖析;数据源创立比较复杂,对于简单对象的创立,能够思考应用工厂模式来优化。

这个章节,次要会介绍以下 4 点:

①简略工厂模式

②工厂模式

③数据源的创立

④数据库连接池技术解析

阿里 p8 私藏 MyBatis 笔记,从入门到精通,纵享源码细节
F:缓存模块剖析
①MyBatis 缓存模块需满足如下需要:

MyBatis 缓存的实现是基于 Map 的,从缓存外面读写数据是缓存模块的外围根底性能;
除外围性能之外,有很多额定的附加性能,如:避免缓存击穿,增加缓存清空策略(fifo、lru)、序列化性能、日志能力、定时清空能力等;
附加性能能够以任意的组合附加到外围根底性能之上。
基于 Map 外围缓存能力,将阻塞、清空策略、序列化、日志等等能力以任意组合的形式优雅的加强是 Mybatis 缓存模块实现最大的难题,用动静代理或者继承的形式扩大多种附加能力的传统形式存在以下问题:

这些形式是动态的,用户不能管制减少行为的形式和机会;另外,新性能的存在多种组合,应用继承可能导致大量子类存在。综上,MyBtis 缓存模块采纳了装璜器模式实现了缓存模块。

②装璜器模式

③装璜器在缓存模块的应用

④缓存的惟一标识 CacheKey

阿里 p8 私藏 MyBatis 笔记,从入门到精通,纵享源码细节
G:反射模块剖析以及 MyBatis 流程
阿里 p8 私藏 MyBatis 笔记,从入门到精通,纵享源码细节
阿里 p8 私藏 MyBatis 笔记,从入门到精通,纵享源码细节
第一阶段:配置加载阶段
①建造者模式

什么是建造者模式
与工厂模式区别
②配置加载的外围类

建造器三个外围类
对于 Configuration 对象
③配置加载过程

阿里 p8 私藏 MyBatis 笔记,从入门到精通,纵享源码细节
第二阶段:代理封装阶段
①Mybatis 的接口层

SqlSession
策略模式
SqlSessionFactory
②binding 模块剖析

binding 模块外围类
binding 模块运行流程

阿里 p8 私藏 MyBatis 笔记,从入门到精通,纵享源码细节
第三个阶段:数据拜访阶段
①对于 Executor 组件

②Executor 中的模板模式

③Executor 的三个重要小弟

④对于 StatementHandler

⑤对于 ResultHandler

阿里 p8 私藏 MyBatis 笔记,从入门到精通,纵享源码细节
与 spring 联合原理
①MyBatis-Spring 是什么

②MyBatis-Spring 集成配置最佳实际

③MyBatis-Spring 集成原理剖析

阿里 p8 私藏 MyBatis 笔记,从入门到精通,纵享源码细节
插件开发
①了解插件

②插件开发疾速入门

③责任链模式

④插件模块源码剖析

阿里 p8 私藏 MyBatis 笔记,从入门到精通,纵享源码细节
获取形式:须要这份阿里技术官私藏《MyBatis 笔记》点击这里获取残缺下载门路形式。

退出移动版