首页 > 其他分享 >MyBatis之执行器(Excutor)

MyBatis之执行器(Excutor)

时间:2023-06-01 09:02:08浏览次数:33  
标签:执行器 SimpleExecutor Excutor SqlSession Executor MyBatis 执行

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中一级缓存和二级缓存的。

标签:执行器,SimpleExecutor,Excutor,SqlSession,Executor,MyBatis,执行
From: https://www.cnblogs.com/jundong2177/p/17447918.html

相关文章

  • mybatis
    MyBatis的基本使用MyBatis类中编写://1、加载mybatis的核心配置文件,获取SqlSessionFactoryStringresource="mybatis-config.xml";InputStreaminputStream=Resources.getResourceAsStream(resource);SqlSessionFactorysqlSessionFactory=newSqlSessionFactoryBuilder().......
  • 解决mybatis-plus查询字段中含有关键词时异常问题
    在使用mybatis-plus查询mysql某张表的数据时,一直告警提示sqlsyntaxerror。于是,把异常提示里的sql语句复制到navicat执行,也提示sqlsyntaxerror。仔细看了下,发有几个字段在navigate里面标示为蓝色(这几个字段为sensitive、status、name),这几个字段在mysql里面是关键词。在查询语......
  • MyBatis+Sharding-JDBC实体类LocalDateTime类型字段查询报SQLFeatureNotSupportedExce
    问题最近协助渠道组开发新需求,封装实现了一个公共模块供不同渠道项目使用。以前各个渠道项目有很多相似的菜单和功能,各自项目里自己的代码实现,本公共模块对新需求的功能点进行抽象,减少重复代码,提高模块复用性和可维护性。目前有2个渠道项目接入了该公共模块,自测时发现其中1个运......
  • Mybatis Plus
    MyBatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发、提高效率1.MyBatisPlus简介入门案例MyBatisPlus概述2.标准数据层开发标准数据层CRUD功能分页功能3.DQL控制条件查询方式查询投影查询条件设定字段映射与表名映射4.DML控制id自增......
  • Mybatis-plus关于代码生成器的使用
    1、添加依赖 2、在test包下创建一个CodeGet类,实现生成代码的功能。注意:全局配置、数据源配置一定要和自己的电脑配置一致! 3、执行CodeGet类中的main方法。打印台有如下图提示字样,即自动生成成功。 4、对比两张图。在wechat文件夹下有controller、entity、mapper、s......
  • Mybatis使用实例
    当涉及到演示如何使用MyBatis时,以下是一个简单的示例代码。这个示例代码将展示如何配置MyBatis,如何定义映射文件以及如何执行数据库操作。首先,你需要准备以下环境:JavaDevelopmentKit(JDK)MyBatis框架的JAR文件数据库连接驱动的JAR文件(根据你使用的数据库类型)接下来,按照......
  • 使用mybatis完成CRUD
    1. 什么是CRUD    17C: Create 增R: Retrieve 查(检索)U: Update 改D: Delete 删2. insert   17<insertid="insertCar">insertintot_car(id,car_num,brand,guide_price,produce_time,car_type)values(null,'1003','丰田霸道',30.0,'2000......
  • 最全面的Mybatis面试八股文
    Mybatis是什么?MyBatis框架是一个开源的数据持久层框架。它的内部封装了通过JDBC访问数据库的操作,支持普通的SQL查询、存储过程和高级映射,几乎消除了所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis作为持久层框架,其主要思想是将程序中的大量SQL语句剥离出来,配置在配......
  • mybatis配置多数据源
    yml中配置mybatis的日志输出信息mybatis:#springboot集成mybatis的方式打印sqlconfiguration:log-impl:org.apache.ibatis.logging.stdout.StdOutImplmaven引入相关的配置<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>my......
  • 开发手记:MyBatis的mapper文件的中SQL符号转义
    字符转义问题在MaBatis的XML文件中编写SQL语句时,<符号会出现转义问题,例如:<!--查询指定月份内的订单--><selectid="queryInRange"resultType="OrderEntity"> SELECT*FROMorder WHEREcreate_time>DATE_SUB(NOW(),INTERVAL#{month}MONTH) ANDuser_i......