缓存刷新(@Flush)

Exisi 2021-03-27 07:47:57
Categories: Tags:
  • @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

 

 

来自 <https://juejin.cn/post/7006955921834246157>