Mybatis
2019-11-18 10:23:28 0 举报
Mybatis源码分析流程图
作者其他创作
大纲/内容
update
同源下的delegate就是装饰器模式。
MapperRegistry
Configure
一级缓存(本地缓存)
二级缓存(全局缓存)
Plugins
反射包装成返回结果
Configuration
被拦截方法原流程,例如Executor.query()
invocation.proceed()
Cache
MapperProxy
Mapper namespace3
invoke
OSCache
RDBMS
execute
SqlSession对象
SqlSession
映射的输出参数
数据源/连接池
结果映射
Update的流程图
配置Parsing
SimpleExecutor
DB
接口层
SQL执行
Mybatis
query
Mapper namespace2
build
getMapper
EHCache
<interface>Executor
intercept()【自定义插件的核心逻辑实现】
Executor
BatchExecutor
DefaultSqlSession
返回MapperProxy
ReuseExecutor
Binding
事务管理
selectOne
TestMapper动词
Client
PrepareStatement
StatementHandler
日志
PrepareStatementHandler
doQuery
被拦截的方法,如Executor.query()
Memcached
映射参数的输入
被拦截(代理)的对象,如Executor
ParameterMapping
SQL Parsing
自定义插件类,需实现Interceptor接口,例如PageInterceptor
反射
配件文件获取SqlSession
insert
ResultSetHandler
简单映射
参数处理
Parsing
关联映射
ParameterHandler
invoke()
第三方缓存库
ResultMapping
1.Executor偏Executor2.AbstractXxxExecutor是提供SimpleExecutro等的共性(模板方法模式--抽取一些共性的步骤)3.AbstractXxxExecutor三个好处:(1)大族群的隔离;(2)分类选择大类处理;(3)日志、共性动作很好的分离。
类型转换
缓存
核心层
数据源
Configurationxml/annotation
Local Cache
BaseExecutor
parameterize
全局
Mybatis把对JDBC的操作封装成:动词(操作)+名词(表)
doUpdate
BlogMapper
MapperMethod
SimpleStatementHandlerPreparedStatementHandlerCallableStatementHandlerRoutingStatementHandler
result
Plugin
被代理对象的包装类
interceptor.intercept(invocation)
延迟加载
CachingExecutor
JDBC
基础层
资源加载
ResultSetMappgin
AbstractBaseExecutor
一次会话
MapperStatement
事务
属性映射
SqlSessionFactory
Database
MyBatis插件调用流程
Test名词
Configurationmybatis-config.xmlmapper.xml
Mapper namespace1
代理类,对四大对象进行代理
MyInterceptor
动态SQL
SimpleExecutorReuseExecutorBatchExecutor
Configuration对象
自定义实现
回归面向对象的本质
配置解析
delete
Executing
参数映射
Invocation
0 条评论
回复 删除
下一页