随笔 - 303  文章 - 0  评论 - 3  阅读 - 15万

五(补充二)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。

              

posted on   池塘里洗澡的鸭子  阅读(70)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示