五(补充二)MyBatis中执行器Executor框架
在五、仿MyBatis自定义的持久层如何添加增删查改功能中,自定义了一个Executor,实现具体执行sql语句。MyBatis实际就是提供了一套Executor框架——但是比自定义的Executor复杂,具体如下图:
其为Mybatis提供与数据库交互的功能,是一个典型的装饰器模式(参考一、装饰器模式,自己实现自己的同时自己是自己的一个属性)的应用——对JDBC功能的封装,同时对其接口的扩展提供了其他加强的功能,比如缓存参考MyBatis功能点之一(1):MyBatis缓存初体验。
首先分析MyBatis在何处使用?显然在sqlsession中。如下UML图:
通过阅读源码,可以证实:
这个Executor,SqlSessionFactory是怎么生成它的呢,即如何实现的?从DefaultSqlSessionFactory源码可知,其openSession时根据configuration对象中的executorType或自定义赋值生成:
那么只需要确定configuration中executorType即可。Configuration类中默认使用CachingExecutor,如下列图示例:
如上图示,同样能看到之前体验过的责任链(参考三、责任链模式,自己set自己是哪个handler)拦截器在Executor实例化时应用。当核心配置文件中有如下配置时,使用非CachingExecutor。
分类:
数据访问 / MyBatis
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?