Mybatis
Mybatis 源码解析与使用实践,包含插件开发、SQL 优化与框架原理理解。
All Articles in Mybatis
深入浅出 Mybatis14:插件
实现Interceptor接口+@Intercepts注解声明拦截目标。配置解析后存入InterceptorChain,创建四大对象时pluginAll基于JDK动态代理包装,invoke匹配拦截方法则执行自定义intercept逻辑,本质是责任链+动态代理模式。
深入浅出 Mybatis13:结果集处理
DefaultResultSetHandler逐行读取ResultSet,getRowValue反射创建目标对象,自动映射+手动映射赋值属性,storeObject将每行记录转换的对象存入List返回。
深入浅出 Mybatis12:参数解析和赋值
ParamNameResolver解析参数名(@Param优先>实际名>索引编号),getNamedParams将单参直接返回、多参转ParamMap。ParameterHandler遍历ParameterMapping列表取值,通过TypeHandler设置到PreparedStatement占位符上。
深入浅出 Mybatis11:StatementHandler
三种实现对应JDK的Statement/PreparedStatement/CallableStatement。BaseStatementHandler模板模式定义prepare流程,RoutingStatementHandler按statementType路由。Executor通过工厂创建Handler→prepare获取Connection→parameterize设参→执行SQL→交ResultSetHandler处理结果集。
深入浅出 Mybatis10:缓存机制
一级缓存在BaseExecutor的localCache(HashMap),作用域SESSION或STATEMENT;二级缓存由CachingExecutor管理,通过TransactionalCacheManager协调多个TransactionalCache,数据事务提交后写入缓存,回滚清空暂存区。
深入浅出 Mybatis09:Executor 执行器
BaseExecutor用模板模式定义query/update流程,三子类:SimpleExecutor每次新建Statement、ReuseExecutor复用Statement、BatchExecutor批量执行。CachingExecutor负责二级缓存,未命中则委托给BaseExecutor处理。





