Mybatis都有哪些Executor执行器?

mybatis-59340143-5155-4719-869e-304b5738b2f2.png

MyBatis提供了三种基本的执行器(Executor)类型:SimpleExecutor、ReuseExecutor和BatchExecutor。

  • SimpleExecutor:每次执行更新(update)或查询(select)操作时,都会打开一个新的Statement对象,并在执行完成后立即关闭它。
  • ReuseExecutor:执行更新或查询时,会使用SQL语句作为键(key)查找对应的Statement对象。如果存在该Statement对象,则重复使用;否则创建一个新的对象。Statement对象存储在一个Map<String, Statement>中,并在使用完后不会关闭,以便下次复用。
  • BatchExecutor:用于批量更新(不支持select语句)。它将所有的SQL语句添加到批处理中(使用addBatch()方法),然后等待一次性执行(使用executeBatch()方法)。BatchExecutor缓存了多个Statement对象,在每个Statement对象上调用addBatch()后,可以一起执行executeBatch()进行批量更新操作。与JDBC的批处理类似。

这些执行器的作用范围严格限定在SqlSession的生命周期内。

要指定在MyBatis中使用哪种执行器类型:

  • 可以在MyBatis配置文件中的settings部分设置默认的ExecutorType执行器类型。另外,也可以在创建DefaultSqlSessionFactory的SqlSession时手动传递ExecutorType类型的参数,例如SqlSession openSession(ExecutorType execType)
  • 配置默认的执行器类型。可选的类型有SIMPLE(普通执行器)、REUSE(重用预处理语句)和BATCH(批量执行器)。SIMPLE是默认的执行器类型,REUSE执行器会重用语句,而BATCH执行器会重用语句并执行批量更新操作。

标签: java, Java面试题, mybatis, Java问题合集, Java编程, Java问题精选, Java常见问题, MyBatis面试题