java - MyBatis SqlSession autoCommit = false 与 ExecutorType.BATCH

标签 java spring mybatis

我目前正在使用 MyBatis,我想知道这两个人有何不同。

openSession(false);

openSession(ExecutorType.BATCH,false);

看起来到数据库的结果是一样的,但是性能呢?这两种类型的 SqlSession 有不同吗?

最佳答案

第一次调用使用在 SqlSessionFactory 中配置的执行程序类型。如果配置了 BATCH 执行器,那么这两个调用绝对相同,您将获得批处理执行器,并且后续行为是相同的。

在没有执行程序类型的情况下,使用显式配置的SIMPLE执行程序。

这两种执行器类型之间的区别可以在执行多个修改语句的场景中看出。

SIMPLE 执行器在调用相应的映射器方法时立即执行查询。 BATCH 执行器使用 JBDC 批处理 API。该 API 不会立即发送查询以供执行,而是收集查询,然后对数据库进行一次网络调用。在某些情况下,这可能会带来性能提升。

关于java - MyBatis SqlSession autoCommit = false 与 ExecutorType.BATCH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53099827/

相关文章:

java - 如何在 Java Spring 应用程序中提交 myBatis 更新语句?

java - 如何在运行时创建变量

java - 使用 Spring Data JPA 执行动态查询

java - 用Java编写自定义语法解释器?

java - 未应用自定义 Spring Boot 安全性

java - MyBatis SelectList 输出 CopyOnWriteArrayList

java - 部署使用 Intellij 生成的 jar 时出现问题

java.lang.NumberFormatException : For input string XX while fetching the data from the database

java - 客户端/服务器 - 更新实体

java - 为特定的 mybatis-spring 映射器设置不同的 ExecutorType