Mybatis__doFlushStatements

本文探讨了Mybatis的Executor执行器及其子类中doFlushStatements方法的作用,该方法主要用于刷新Statement。在不同类型的Executor中,如BaseExecutor、SimpleExecutor、BatchExecutor和ReuseExecutor,doFlushStatements的实现有所不同。BaseExecutor在commit、rollback和close时都会调用该方法。SimpleExecutor不缓存Statement,因此实现为空;而BatchExecutor和ReuseExecutor由于缓存Statement,因此在doFlushStatements中执行特定操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

相信看过Mybatis的执行器Executor以及5个子类源码的朋友应该对FlushStatements和doFlushSatements知道吧,这里我们说说它的作用,顾名思义的话了就是刷新Statement,我们知道在执行器就是执行Statement的,在进行提交,回滚等事务操作以及DML操作时,需要刷新Statement,在不同的Executor执行器中因为缓存执行器需要缓存,SimpleStatement执行完就关闭Statement,ReuseExecutor执行完不关闭而是返回Map集合中,等,所以在各执行器中的doFlushSatements也是不同的。

BaseExecutor
我们知道BaseExecutor是Executor顶层接口的子类,也是执行器类的基类,它基本实现了Update和quart还有commit,rollback等功能,还有定义了抽象方法doUpdate(),doQuery(), doFlushStatement()给其子类去实现符合各自的方法,它也简单的实现了flushStatement的功能,也定义了doFlushStatement抽象方法给子类去实现。

@Override
  public List<BatchResult> flushStatements() throws SQLException {
	
    return flushStatements(false);
  }

  public List<BatchResult> flushStatements(boolean isRollBack) throws SQLException {
    if (closed) {
      throw new ExecutorException("Executor was closed.");
    }
    return doFlushStatements(isRollBack);
  }


/**
   * 事务提交
   */
  @Override
  public void commit(boolean required) throws S
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

偷偷学习被我发现

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值