目录

1、执行器介绍

  • 执行器的选择入口

  • 设置执行器两种方式

    • 全局配置(不建议)

    • 局部设置(建议)

2、三个执行器区别

  • SimpleExecutor

  • ReuseExecutor

  • BatchExecutor

  • 总结

3、效率测试

4、平时开发使用

一、执行器介绍

Mybatis中执行器关系如上图所示,真正生效并在最后执行中有着不同效果的只有三个执行器:

  • SimpleExecutor: 默认的执行器, 对每条sql进行预编译->设置参数->执行等操作

  • ReuseExecutor: 重用执行器会重用预处理语句(prepared statements)

  • BatchExecutor: 批量执行器, 对相同sql进行一次预编译, 然后设置参数, 最后统一执行操作

1、执行器的选择入口

执行器的选择就在获取SqlSession的时候

内部会调用DefaultSqlSessionFactory.openSessionFromDataSource:

可以会根据ExecutorType来选择获取某种类型执行器,我们平时不会传参,所以默认就是SimpleExecutor

ExecutorType有三种类型,正好与三种执行器对应

2、设置执行器两种方式

a、全局配置(不建议)

在XML配置文件中全局设置

b、局部设置(建议)

就是在获取SqlSession的时候传参,指定该SqlSession采用某种执行器执行

二、三个执行器区别

1、SimpleExecutor(默认执行器)

特点:

  • 每次执行 SQL 都会创建一个新的 Statement 对象,执行完毕后立即关闭。

  • 简单直接,但频繁创建和销毁 Statement 可能影响性能。

  • SimpleExecutor: 多次预编译、多次传参处理、多次执行

适用场景:

  • 常规单条 SQL 执行。

  • 不需要复用 Statement 或批量操作的场景。

代码示例:

2、ReuseExecutor(可重用执行器)

特点:

  • 缓存同一个 SQL 对应的 Statement 对象,避免重复创建。

  • 以 SQL 语句为 Key 缓存 Statement,同一会话(SqlSession)内相同 SQL 可复用。statementMap.put(sql, stmt);

  • 性能优于 SimpleExecutor(减少创建 Statement 的开销)

  • ReuseExecutor: 一次预编译、多次传参处理、多次执行

注意事项:

  • 在事务提交或回滚时,会自动关闭缓存的 Statement。

  • 不适用于多线程环境(SqlSession 非线程安全)

适用场景:

  • 同一会话中多次执行相同 SQL

代码示例:

3、BatchExecutor(批量执行器)

特点:

  • 将多个 UPDATE/INSERT/DELETE 操作批量提交,减少数据库交互次数。

  • 通过 addBatch() 缓存操作,调用 flushStatements() 时一次性提交。

  • 对 SELECT 无效,SELECT 会立即执行。

  • BatchExecutor: 一次预编译、多次传参处、一次执行

注意事项:

  • 需手动调用 flushStatements() 或通过事务提交触发批量执行。

  • 需结合事务管理,避免部分失败导致数据不一致。

适用场景:

  • 批量插入、更新或删除操作(如导入数据)

代码示例:

Mybatis三大执行器的更多相关文章

  1. SSM(SpringMVC+Spring+MyBatis)三大框架使用Maven快速搭建整合(实现数据库数据到页面进行展示)

    本文介绍使用SpringMVC+Spring+MyBatis三大框架使用Maven快速搭建一个demo,实现数据从数据库中查询返回到页面进行展示的过程. 技术选型:SpringMVC+Spring+M ...

  2. JavaWeb_(SpringMVC框架)测试SpringMVC&Spring&MyBatis三大整合

    搭建 SpringMVC&Spring&MyBatis三大整合 传送门 1.准备 测试搭建S pringMVC&Spring&MyBatis三大整合 用例   a)准备 ...

  3. MyBatis中执行器Executor框架

    与JDK提供的Executor框架类似,MyBatis也提供了一套Executor框架,具体如下图: 其为Mybatis提供与数据库交互的功能,是一个典型的装饰器模式的应用--对JDBC功能的封装,同 ...

  4. JAVA 框架 / SSM / SSM SPRING+SPING MVC + MYBATIS 三大框架整合详细步骤

    http://how2j.cn/k/ssm/ssm-tutorial/1137.html

  5. SSM 三大框架系列:Spring 5 + Spring MVC 5 + MyBatis 3.5 整合(附源码)

    之前整理了一下新版本的 SSM 三大框架,这篇文章是关于它的整合过程和项目源码,版本号分别为:Spring 5.2.2.RELEASE.SpringMVC 5.2.2.RELEASE.MyBatis ...

  6. Mybatis执行器源码手记

    今天将Mybatis的执行器部分做一下简单手记. 一.java原生JDBC 众所周知,Mybatis是一个半自动化ORM框架.其实说白了,就是将java的rt.jar的JDBC操作进行了适度的封装.所 ...

  7. MyBatis执行器

    Mybatis的执行器 下面先展示一张图,用来说明一下Mybatis执行器的整体架构 SimpleExecutor 首先SimpleExecutor是我们最常使用的一个执行器,无论我们执行什么方法默认 ...

  8. 使用Redis做MyBatis的二级缓存

    使用Redis做MyBatis的二级缓存 通常为了减轻数据库的压力,我们会引入缓存.在Dao查询数据库之前,先去缓存中找是否有要找的数据,如果有则用缓存中的数据即可,就不用查询数据库了. 如果没有才去 ...

  9. 《深入理解mybatis原理》 MyBatis的架构设计以及实例分析

    作者博客:http://blog.csdn.net/u010349169/article/category/2309433 MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简 ...

  10. 深入浅出mybatis之缓存机制

    目录 前言 准备工作 MyBatis默认缓存设置 缓存实现原理分析 参数localCacheScope控制的缓存策略 参数cacheEnabled控制的缓存策略 总结 前言 提到缓存,我们都会不约而同 ...

随机推荐

  1. 项目PMP之七项目成本管理

    项目PMP之七--项目成本管理   一.定义:在预算内管理成本:预测项目成本 核心理念:重点关注项目活动的成本:同时决策的影响.相关方的不同时间不同方法的测算 趋势:挣值进度(ES)逻辑:敏捷的方式则 ...

  2. 快速修改MySQL数据库名称

    原理:先创建新的数据库,然后利用information_schema数据库表结构信息,用 RENAME命令 将旧的表迁移到新数据库里面,最后删除旧的数据库名称即可. 步骤如下: #查询目标数据库下面的 ...

  3. Centos 7 单用户模式修改密码/配置

    1.启动系统,启动项界面显示时,按"↑↓"键停留在此界面,按下"e"键进入编辑模式 2.利用"↑↓"键找到"linux16&quo ...

  4. 正式发布!《ICPMM行业云平台运营管理能力成熟度》系列标准来了!

    近日,由中国信息通信研究院(简称中国信通院)主办的企业上云用云专项行动会在北京举行.在"行业云平台研讨会暨年度成果发布会"专题会议中,中国信通院携手天翼云与业界多家头部机构发布&l ...

  5. Linux 服务器防火墙开放端口命令(iptables、firewalld和ufw)

    本文主要介绍Linux中,Centos.Ubuntu和Debian开放防火墙端口的命令(iptables.firewalld和ufw)方法. 1.Centos中开放端口 1.systemctl sta ...

  6. 闲话 6.19/CF1938M

    CF1938M 计数以下序列 \(\lang a\rang\) 的个数: \[\sum_{i=1}^m a_i=n\\ \forall 1<i<m,(a_i-a_{i-1})(a_i-a_ ...

  7. Amoro提供grafana的metrics介绍

    一.指标内容 +| Metric Name | Type | Tags | Description | +|---------------------------------------------- ...

  8. 数字先锋 | 央企首批!天翼云助力中国石化率先完成全尺寸DeepSeek国产化部署!

    自2025年春节以来,DeepSeek的全新开源推理模型在全球范围内迅速走红,成为各界关注的焦点,同时引发国产AI发展浪潮.众多国内企业相继接入DeepSeek系列模型,以提升企业智能化水平,加速业务 ...

  9. CAD内核的奥秘 | 工业软件发展史 (转)

    CAD内核的奥秘 | 工业软件发展史 (声明:此文非本人原著,仅供交流,如果侵犯到原作者权利,立即删除) 如果一个产业要寻根,就会发现一个万千世界,最后会聚焦到一个点上. "一沙一世界&qu ...

  10. ABB工业机器人控制柜IRC5维修具体细节

    对于ABB机器人维修工作,需要具备专业的知识和技能,同时遵循维修步骤和注意事项.通过加强预防措施和建议的实施,可以有效降低ABB工业机器人控制柜IRC5的故障率,提高ABB工业机器人的整体运行效率. ...