MyBatis之执行器(Excutor)

MyBatis之执行器(Executor)

前面的文章已经介绍了MyBatis的基本使用流程,但我们不能仅仅局限于使用,而是应该去横向扩展,往更深的方向研究。今天就先讲解一下MyBatis中的执行器Executor。

我们在CURD的时候,每次都会去获取一个新的SqlSession对象,

可以看出来这个接口主要定义类关于CRUD、数据库事务、数据库刷新等相关操作。下面看它的默认实现类:

可以看到 DefaultSqlSession 实现了SqlSession中的方法,(其实我们自己也可根据需要去实现)

而在这个方法中,存在一个属性就是今天需要将的主角,Mybatis的执行器(Executor)。

1、Executor简单介绍

Executor执行器,是mybatis中执行查询的主要代码, Executor分为三种,分别是

简单执行器SimpleExecutor、可重用执行器ReuseExecutor、批量执行器BatchExecutor。

可以在mybatis的配置文件中设置使用哪种执行器:

源码中,初始化SqlSession的时候,会查看配置文件中是否有配置,没有则使用SimpleExecutor

下面分别简单使用三个执行执行以下代码:

首先初始化以下相关需要的信息:

1、SimpleExecutor

1684997744661

执行结果:

当执行两次查询的时候,可以看到每次执行都会进行一次预编译(就是创建一个PrepareStatement),这样效率相对比较低。

2、 ReuseExecutor

执行结果 :

可以看到,当使用ReuseExecutor的时候,虽然执行了2次查询,但是只执行了一次预编译。相对简单执行,可重用执行器的效率会高一些。

3、BatchExecutor

批量执行器,当查询的时候,跟SimpleExecutor一样,也会执行多次的预编译。而更新或插入操作的时候,会批量进行,但是要注意需要手动进行提交:

下面我们看一下执行器的类图:

通过类型可以发现,在第二层中,存在两个实现类分别是 BaseExecutor和CachingExecutor两个类。其实他们两个分别是实现mybatis中一级缓存和二级缓存的。

posted @ 2023-06-01 08:46  戒爱学Java  阅读(170)  评论(0编辑  收藏  举报