浅析Mybatis三种执行器

1、哪三种执行器

package org.apache.ibatis.session;

public enum ExecutorType { 
    SIMPLE,  //默认
    REUSE,  //复用
    BATCH; //批量

    private ExecutorType() { 
    }
}

从枚举类ExecutorType可以看出三种执行器;
第一个问题:为什么枚举类必须私有化构造器?

  • 唯一性:防止实例化造成命名冲突,统一由JVM加载的时候,实例化枚举对象
  • 将枚举类设计成单例,因为他的值是固定的,不需要发生改变

2、三种执行器分别干什么

  • SIMPLE:
    默认执行器,对sql语句进行预编译、设置参数、执行等操作
  • REUSE:
    复用执行器,执行器会重用预处理语句(PreparedStatement)
  • BATCH:
    批量执行器,不仅重用预处理语句,还批量处理

3、三种执行器怎么指定

使用mybatis会创建封装了sql操作的sqlSession对象

//指定SIMPLE
SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.SIMPLE);

--------------------------------------------------------------------------

//指定REUSE
SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.REUSE);

--------------------------------------------------------------------------
//指定BATCH
SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH);

//BATCH批量操作需要自动提交
sqlSession.commit();

4、三种执行器各自优势

第二个问题:插入100条相同格式数据(同一条sql语句),三种执行器执行特色?

减少码字:
这里定义表格中”操作“代表”预编译、设置sql语句参数、执行sql插入操作“

执行器特色
SIMPLE每次插入都会执行”操作“中所有操作
REUSE第一次插入会执行”操作“中的预编译,然后每步都要执行”操作“中的赋值与插入
BATCH第一次插入会执行”操作“中的预编译,每步只用执行”操作“中的赋值,最后统一执行
    原文作者:蓝桉未与
    原文地址: https://blog.csdn.net/qq_44833552/article/details/120934882
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞