- @Flush 用于调用 SqlSession.flushStatements() 方法,标记后的方法会作用于批量更新
示例
public interface UserMapper(){
@Flush
List<BatchResult> flushBatchedStatements();
}
- 上述方法中返回值为 List<BatchResult>,表示批量操作执行后每个操作所影响的行数。如果没有任何操作被执行,则返回一个空列表
注
- 在使用 @Flush 之前,需要将执行器的类型设置为 BatchExecutor。可以通过全局设置和获取 Session 的时候局部设置
- 全局开启:
<configuration>
<settings>
<setting name="defaultExecutorType" value="BATCH" />
</settings>
</configuration>
- 获取 SqlSeesion 开启:
示例
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
SqlSession session = sqlSessionFactory.openSession(ExecutorType.BATCH);
- 在 Spring 中可以使用全局设置的方式启用,便于接管 Mybatis 的事务处理
mybatis:
executor-type: batch
- @Flush 标注的方法不能有对应的xml文件。且返回值必须为 List