MyBatis之执行器(Excutor)
MyBatis之执行器(Executor)
前面的文章已经介绍了MyBatis的基本使用流程,但我们不能仅仅局限于使用,而是应该去横向扩展,往更深的方向研究。今天就先讲解一下MyBatis中的执行器Executor。
我们在CURD的时候,每次都会去获取一个新的SqlSession对象,
可以看出来这个接口主要定义类关于CRUD、数据库事务、数据库刷新等相关操作。下面看它的默认实现类:
可以看到 DefaultSqlSession 实现了SqlSession中的方法,(其实我们自己也可根据需要去实现)
而在这个方法中,存在一个属性就是今天需要将的主角,Mybatis的执行器(Executor)。
1、Executor简单介绍
Executor执行器,是mybatis中执行查询的主要代码, Executor分为三种,分别是
简单执行器SimpleExecutor、可重用执行器ReuseExecutor、批量执行器BatchExecutor。
可以在mybatis的配置文件中设置使用哪种执行器:
源码中,初始化SqlSession的时候,会查看配置文件中是否有配置,没有则使用SimpleExecutor
下面分别简单使用三个执行执行以下代码:
首先初始化以下相关需要的信息:
1、SimpleExecutor
执行结果:
当执行两次查询的时候,可以看到每次执行都会进行一次预编译(就是创建一个PrepareStatement),这样效率相对比较低。
2、 ReuseExecutor
执行结果 :
可以看到,当使用ReuseExecutor的时候,虽然执行了2次查询,但是只执行了一次预编译。相对简单执行,可重用执行器的效率会高一些。
3、BatchExecutor
批量执行器,当查询的时候,跟SimpleExecutor一样,也会执行多次的预编译。而更新或插入操作的时候,会批量进行,但是要注意需要手动进行提交:
下面我们看一下执行器的类图:
通过类型可以发现,在第二层中,存在两个实现类分别是 BaseExecutor和CachingExecutor两个类。其实他们两个分别是实现mybatis中一级缓存和二级缓存的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异