Mybatis 中的 Executor

MyBatis框架提供了三种不同的 Executor 执行器实现,分别是 SimpleExecutor、 ReuseExecutor 和 BatchExecutor。它们之间的区别如下:

  1. SimpleExecutor(简单执行器):

    • 在每次执行数据库 update 或 select 操作时,都会创建一个新的 Statement 对象,并立即执行 SQL 语句。
    • 每次执行都会创建和关闭 Statement 对象,没有二级缓存的使用。
    • 适用于执行简单、临时性的 SQL 操作。
  2. ReuseExecutor(可重用执行器):

    • 在执行数据库 update 或 select 操作时,会重用已经存在的 Statement 对象。
    • 在多次执行相同的 SQL 语句时,不需要重复创建 Statement 对象,提高了性能。
    • 适用于执行相同 SQL 语句多次的场景,例如批量插入或更新。
  3. BatchExecutor(批量执行器):

    • 在执行数据库 update (没有select,JDBC批处理不支持select)操作时,会进行批量操作,减少了与数据库之间的通信次数。
    • 当一次性执行大量的相同 SQL 的批量操作时,可以显著提高性能。
    • 执行的 SQL 会批量提交到数据库,并在数据库中执行,可能存在一定的风险。
    • 适用于大批量的数据插入、更新或删除操作。

这三种执行器在处理 SQL 语句时的性能和效果略有不同,适用于不同的使用场景。SimpleExecutor 每次都会创建新的 Statement 对象,适合用于简单的 SQL 操作。ReuseExecutor 能够重用已存在的 Statement 对象,适合用于多次执行相同 SQL 语句的场景。BatchExecutor 适合执行大批量的相同 SQL 的操作,可以显著提高性能,但需要注意批量提交可能存在一定的风险。

可以在 MyBatis 的配置文件中选择合适的执行器,根据应用程序的需求和数据库操作的特点来选择合适的执行器类型。

Mybatis中如何指定使用哪一种Executor执行器?

  • 在Mybatis配置文件中,在设置(settings)可以指定默认的ExecutorType执行器类型,也可以手动给DefaultSqlSessionFactory的创建SqlSession的方法传递ExecutorType类型参数,如SqlSession openSession(ExecutorType execType)。
  • 配置默认的执行器。SIMPLE 就是普通的执行器;REUSE 执行器会重用预处理语句(prepared statements); BATCH 执行器将重用语句并执行批量更新。

相关推荐

  1. Mybatis Executor

    2024-04-03 05:42:06       37 阅读
  2. 带你学习Mybatis之执行器Executor

    2024-04-03 05:42:06       28 阅读
  3. with ThreadPoolExecutor() as executor使用举例

    2024-04-03 05:42:06       53 阅读
  4. Mybatis${}和#{}区别

    2024-04-03 05:42:06       40 阅读
  5. mybatisxml语法

    2024-04-03 05:42:06       70 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-03 05:42:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-03 05:42:06       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-03 05:42:06       82 阅读
  4. Python语言-面向对象

    2024-04-03 05:42:06       91 阅读

热门阅读

  1. 常见docker使用命令

    2024-04-03 05:42:06       31 阅读
  2. 软件设计原则:依赖倒置

    2024-04-03 05:42:06       36 阅读
  3. 【前端推荐】node.js有哪些命令

    2024-04-03 05:42:06       29 阅读
  4. 谈谈SSH整合--一起学习吧之系统架构

    2024-04-03 05:42:06       39 阅读
  5. C++11:非常完美的完美转发以及新的类功能

    2024-04-03 05:42:06       35 阅读
  6. 计算机网络-文件读写——沐雨先生

    2024-04-03 05:42:06       32 阅读
  7. docker 安装elasticsearch密码配置

    2024-04-03 05:42:06       31 阅读
  8. HTTP/2 牛逼在哪?(计算机网络)

    2024-04-03 05:42:06       40 阅读
  9. 【element】常用 El-Form 自定义表单校验规则实战

    2024-04-03 05:42:06       36 阅读
  10. 洛谷 P2658 汽车拉力比赛

    2024-04-03 05:42:06       36 阅读
  11. 解释Python中的HTTP请求和响应

    2024-04-03 05:42:06       40 阅读