mybatis(第五天)研究mybatis源码第三天

不清楚的同学 参考mybatis(第四天)研究mybatis源码第二天

方法里调用  DefaultSqlSessionFactory的openSession() 来创建SqlSession 对象

 openSession()方法调用了 openSessionFromDataSource()方法,即

 public SqlSession openSession() {
    return openSessionFromDataSource(configuration.getDefaultExecutorType(), null, false);
  }

传入参数为configuration.getDefaultExecutorType() ,ExecutorType 这样三个类型 即 SIMPLE, REUSE, BATCH ,后面创建哪个类型的执行器就是根据这个参数,然后创建了 SimpleExecutor 简单执行器 ,即

public Executor newExecutor(Transaction transaction, ExecutorType executorType) {
    executorType = executorType == null ? defaultExecutorType : executorType;
    executorType = executorType == null ? ExecutorType.SIMPLE : executorType;
    Executor executor;
    if (ExecutorType.BATCH == executorType) {
      executor = new BatchExecutor(this, transaction);
    } else if (ExecutorType.REUSE == executorType) {
      executor = new ReuseExecutor(this, transaction);
    } else {
      executor = new SimpleExecutor(this, transaction);
    }
    if (cacheEnabled) {
      executor = new CachingExecutor(executor);
    }
    executor = (Executor) interceptorChain.pluginAll(executor);
    return executor;
  }

然后把这几个参数传递过来,创建了SqlSession

 执行器只有三种 即 SimpleExecutor 简单执行器 ,ReuseExecutor重复使用执行器 , BatchExecutor批量执行器

SimpleExecutor:每执行一次update或select,就开启一个Statement对象,用完立刻关闭Statement对象

 ReuseExecutor每执行一次update或select,就开启一个Statement对象,用完不关闭放进map内 供下次使用

BatchExecutor:没有select 只有 update ,等待数据都添加到批处理中,一起处理,它缓存了多个Statement对象,每个Statement对象都是addBatch()完毕后,等待逐一执行executeBatch()批处理

Executor的这些特点,都严格限制在SqlSession生命周期范围内。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

黄泉路好走

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

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

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

打赏作者

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

抵扣说明:

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

余额充值