MyBatis之执行器(Excutor)
Posted 戒爱学Java
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
执行结果:
当执行两次查询的时候,可以看到每次执行都会进行一次预编译(就是创建一个PrepareStatement),这样效率相对比较低。
2、 ReuseExecutor
执行结果 :
可以看到,当使用ReuseExecutor的时候,虽然执行了2次查询,但是只执行了一次预编译。相对简单执行,可重用执行器的效率会高一些。
3、BatchExecutor
批量执行器,当查询的时候,跟SimpleExecutor一样,也会执行多次的预编译。而更新或插入操作的时候,会批量进行,但是要注意需要手动进行提交:
下面我们看一下执行器的类图:
通过类型可以发现,在第二层中,存在两个实现类分别是 BaseExecutor和CachingExecutor两个类。其实他们两个分别是实现mybatis中一级缓存和二级缓存的。
mybatis执行流程
简介
开源的持久层框架:代码简洁,写sql,性能还可以。容易掌握
执行图
文字说明
-
先创建核心配置文件(sqlMapConfig.xml)
-
再创建映射文件(可以有多个 ~ 通常有多少张表就有多少)
-
通过对象SqlSessionFactory对象来创建
-
通过SqlSessionFactory来返回sqlSession接口(
他并不是执行,只是负责调用
) -
通过调用返回一个excutor(执行器)(真正使用)
-
通过excutor(执行器)来包装MappedStatement
-
通过MappedStatement可以访问数据库
-
在访问数据库之前进行输入映射(Map)(String Integer等基本数据类型)(pojo)
-
在查找出来的结果集进行输出映射(Map)(String Integer等基本数据类型)(pojo)(List)
以上是关于MyBatis之执行器(Excutor)的主要内容,如果未能解决你的问题,请参考以下文章