我目前正在与MyBatis合作,我想知道这两个家伙有何不同。
openSession(false);
和
openSession(ExecutorType.BATCH,false);
似乎数据库的结果是相同的,但是性能如何?这两种SqlSession类型不同吗?
答案 0 :(得分:0)
第一个调用使用在您的SqlSessionFactory
中配置的执行程序类型。如果配置了BATCH
执行程序,那么这两个调用是绝对相同的,您将获得批处理执行程序,并且后续行为也相同。
在没有显式配置的执行器类型中,没有使用SIMPLE
执行器。
在执行多个修改语句的情况下,可以看出这两种执行程序类型之间的差异。
SIMPLE
执行程序在调用相应的mapper方法时立即执行查询。 BATCH
执行者使用JBDC
批处理API。该API不会立即发送查询以执行,而是会收集查询,然后对数据库进行单个网络调用。在某些情况下,这可能会提高性能。