DK/Dylan Blog
• 14 articles

Mybatis

Mybatis 源码解析与使用实践,包含插件开发、SQL 优化与框架原理理解。

All Articles in Mybatis

JUN212021
Mybatis源码分析

深入浅出 Mybatis14:插件

实现Interceptor接口+@Intercepts注解声明拦截目标。配置解析后存入InterceptorChain,创建四大对象时pluginAll基于JDK动态代理包装,invoke匹配拦截方法则执行自定义intercept逻辑,本质是责任链+动态代理模式。

2 min read
JUN202021
Mybatis源码分析

深入浅出 Mybatis13:结果集处理

DefaultResultSetHandler逐行读取ResultSet,getRowValue反射创建目标对象,自动映射+手动映射赋值属性,storeObject将每行记录转换的对象存入List返回。

2 min read
JUN202021
Mybatis源码分析

深入浅出 Mybatis12:参数解析和赋值

ParamNameResolver解析参数名(@Param优先>实际名>索引编号),getNamedParams将单参直接返回、多参转ParamMap。ParameterHandler遍历ParameterMapping列表取值,通过TypeHandler设置到PreparedStatement占位符上。

3 min read
JUN182021
Mybatis源码分析

深入浅出 Mybatis11:StatementHandler

三种实现对应JDK的Statement/PreparedStatement/CallableStatement。BaseStatementHandler模板模式定义prepare流程,RoutingStatementHandler按statementType路由。Executor通过工厂创建Handler→prepare获取Connection→parameterize设参→执行SQL→交ResultSetHandler处理结果集。

2 min read
JUN172021
Mybatis源码分析

深入浅出 Mybatis10:缓存机制

一级缓存在BaseExecutor的localCache(HashMap),作用域SESSION或STATEMENT;二级缓存由CachingExecutor管理,通过TransactionalCacheManager协调多个TransactionalCache,数据事务提交后写入缓存,回滚清空暂存区。

6 min read
JUN142021
Mybatis源码分析

深入浅出 Mybatis09:Executor 执行器

BaseExecutor用模板模式定义query/update流程,三子类:SimpleExecutor每次新建Statement、ReuseExecutor复用Statement、BatchExecutor批量执行。CachingExecutor负责二级缓存,未命中则委托给BaseExecutor处理。

5 min read