MyBatis SqlSession autoCommit = false与ExecutorType.BATCH

时间:2018-11-01 10:54:38

标签: java spring mybatis

我目前正在与MyBatis合作,我想知道这两个家伙有何不同。

openSession(false);

openSession(ExecutorType.BATCH,false);

似乎数据库的结果是相同的,但是性能如何?这两种SqlSession类型不同吗?

1 个答案:

答案 0 :(得分:0)

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

在没有显式配置的执行器类型中,没有使用SIMPLE执行器。

在执行多个修改语句的情况下,可以看出这两种执行程序类型之间的差异。

SIMPLE执行程序在调用相应的mapper方法时立即执行查询。 BATCH执行者使用JBDC批处理API。该API不会立即发送查询以执行,而是会收集查询,然后对数据库进行单个网络调用。在某些情况下,这可能会提高性能。