Mybatis三大执行器

news/2025/4/2 5:19:55/文章来源:https://www.cnblogs.com/jock766/p/18796473

目录


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() 或通过事务提交触发批量执行。

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


适用场景:

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


代码示例:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/906738.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

顶灯控制器OHC

汽车顶灯控制器OHC(Over Head Console)顶部控制终端系统,主要实现对车内饰灯以及天窗的控制功能。OHC产品采用平台化设计,并已通过多家整车厂的设计评审和试验验证,为特斯拉、福特、林肯、捷豹、路虎等众多车型配套。 汽车顶灯控制器OHC(Over Head Console)顶部控制终…

MES系统选择哪家好?珠海盈致科技

在制造业数字化转型的浪潮中,制造执行系统(MES)已成为连接企业计划层与生产现场的核心枢纽。面对市场上众多MES服务商,珠海盈致科技凭借其独特的技术架构、行业深耕能力与创新服务模式,成为企业实现精益生产与智能决策的可靠选择。 一、技术架构:从底层兼容到顶层智能的…

新一代ITSM:燕千云重构企业智慧服务生态体系

随着企业数字化建设不断深入,IT服务请求量也呈现爆发式增长态势,多数企业领导者已将员工体验列为战略优先级,企业服务管理已从后台支持走向战略核心。现代企业的服务管理已形成两大核心战场——技术支撑的IT服务与以人为本的员工服务。前者涵盖从基础设施运维到新兴技术融合…

FlowiseAI 任意文件写入漏洞(CVE-2025–26319)

Flowise存在严重的文件上传漏洞,尽管实施了上传校验机制,攻击者仍可通过特殊编码绕过限制,实现任意目录的文件写入。这一安全缺陷使未经授权的攻击者能够上传恶意文件、脚本或SSH密钥,从而获取对托管服务器的远程控制权,对使用该平台构建AI代理的组织构成重大安全威胁。漏…

prisma

Prisma 是一个现代的 ORM(对象关系映射) 工具,用于简化与数据库的交互。它可以帮助开发者通过代码操作数据库,而不必直接编写 SQL 查询。Prisma 支持多种数据库系统,包括 PostgreSQL、MySQL、SQLite 和 SQL Server,并且提供了对 TypeScript 和 JavaScript 的完整支持。Pr…

Hugo 渲染及主页展示白名单

本人通过 Obsidian + Hugo + Github Page + Github Action 来实现文章管理及博客自动化搭建. Hugo 渲染白名单 因为不想将 Obsidian 仓库中的一些隐私笔记发布到博客上, 于是选择使用 module.mounts 来配置允许 Hugo 渲染的文件夹. module:mounts:- source: "content/post…

统计中的三大检验

t 检验 常用于:正态总体方差未知,单样本均值检验;(方差已知用 z-test, 非正态总体小样本用切比雪夫不等式); 两独立正态总体,方差未知但相等,均值差检验;(方差已知用 z-test;方差未知且不等时使用 Welchs t 检验,大样本下正态近似也能用 z-test); 两独立正态总体,…

信创行业面临的挑战与应对策略

信创,即信息技术应用创新产业,旨在实现信息技术领域的自主可控,构建安全可靠的信息技术体系。近年来,随着全球政治经济形势的变化以及数字化转型的加速,信创行业迎来了前所未有的发展机遇,同时也面临着诸多严峻的挑战。深入剖析这些挑战并探寻有效的应对策略,对于信创行…

PLM项目管理软件如何支持企业的产品合规管理?

产品合规管理在企业运营中至关重要,关乎企业的声誉、市场竞争力以及可持续发展。随着市场环境的日益复杂和法规要求的不断严格,企业面临着越来越多的产品合规挑战。PLM(产品生命周期管理)项目管理软件作为一种强大的工具,能够为企业的产品合规管理提供全方位的支持,助力企…

P1282 多米诺骨牌

链接 https://www.luogu.com.cn/problem/P1282 思路本来的思路是dp[i][j][0/1]表示前i个选j个翻面其中第i个是(1)否(0)翻面。然后递推取min。但是这样很显然会导致类似贪心的问题:只符合前面的局部利益,不符合后续最佳组合。 正确做法: 用dp[i][j]来表示当前考虑到第i个…

矿井人员误入预警防爆系统

燧机科技AI智能矿井人员误入报警防爆系统嵌入AI智能人体识别深度算法,人员误入监测是在带式输送机的重要位置或沿线,安装人体智能分析和越界监测功能的防爆AI智能分析预警摄像机,实时监测识别人员与带式输送机的距离,当摄像机识别到人员与带式输送机的距离发生变化时且进入…

PLM在电子与半导体行业的应用价值

产品生命周期管理(PLM)作为一种先进的管理理念和技术,在电子与半导体行业正发挥着日益重要的作用。随着电子与半导体行业的快速发展,产品更新换代速度加快,市场竞争愈发激烈,企业面临着诸多挑战,如缩短产品上市时间、提高产品质量、降低成本等。而PLM的应用为企业应对这…