Mybatis 执行器

2024-02-16 09:38
文章标签 mybatis 执行器

本文主要是介绍Mybatis 执行器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

JDBC的执行流程如下图:
在这里插入图片描述
先提起JDBC是因为mybatis就是一个基于JDBC的ORM(Object/Relation Mapping 对象/关系映射)框架。

mybatis执行器:
在这里插入图片描述
执行接口Executor: 提供增删改查,提交事务,回滚,关闭等操作。

抽象父类BaseExecutor: 主要提供获取连接,一级缓存等公共功能。query方法提供缓存使用。这也是我们经常说的基于sqlsession的一级缓存。

简单执行器SimpleExecutor: 默认的执行器,每次执行sql的时候,就开启一个Statement对象,用完就关闭这个对象(可以是Statement或Preparement对象),等于是每次执行都会开启预编译处理。

重用执行器ReuseExecutor: 执行sql,以sql作为key查找Statement对象,存在就使用,不存在就创建,用完后,不关闭Statement对象,而是放在Map<String,Statement>内,供下一次使用。(可以是Statement或Preparement对象),多次执行同一sql不重复进行预编译处理。

批量执行器BatchExecutor: 执行sql时,将所有sql都添加到批处理中(addBatch()),等待统一执行(executeBatch()),它缓存了多个Statement对象,每个Statement对象都是addBatch()完毕后,等待逐一执行executeBatch()批处理的(可以是Statement或PrepareStatement对象)。

需要特别注意的时, 当选择批量执行器时, 纵使在获取sqlSession时, 设置了自动提交事务, 也需要手动提交事务
批处理刷新:executor.doFlushStatements(false);-----执行完毕提交事务

缓存执行器CachingExecutor: 先从缓存中获取结果,存在就放回,不存在就去数据库查询。这里是二级缓存,调用query方法时首先执行查询二级缓存,如果二级缓存没有再去查询一级缓存。二级缓存需要主动开启,不能自定义数据处理器。
在这里插入图片描述
ClosedExecutor: 不需要关注,它是一个私有内部类。

AbstractBaseExecutor: 不需要关注,这块儿不属于mybatis的代码。

局部设置:
在获取sqlSession时设置, 需要注意的时, 如果选择的是批量执行器时, 需要手工提交事务。

// 获取指定执行器的sqlSession
SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH)// 获取批量执行器时, 需要手动提交事务
sqlSession.commit();

全局配置:
可在全局配置文件中配置

<settings><setting name="defaultExecutorType" value="BATCH" />
</settings>

这篇关于Mybatis 执行器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/714168

相关文章

mybatis的整体架构

mybatis的整体架构分为三层: 1.基础支持层 该层包括:数据源模块、事务管理模块、缓存模块、Binding模块、反射模块、类型转换模块、日志模块、资源加载模块、解析器模块 2.核心处理层 该层包括:配置解析、参数映射、SQL解析、SQL执行、结果集映射、插件 3.接口层 该层包括:SqlSession 基础支持层 该层保护mybatis的基础模块,它们为核心处理层提供了良好的支撑。

Spring+MyBatis+jeasyui 功能树列表

java代码@EnablePaging@RequestMapping(value = "/queryFunctionList.html")@ResponseBodypublic Map<String, Object> queryFunctionList() {String parentId = "";List<FunctionDisplay> tables = query(parent

Mybatis中的like查询

<if test="templateName != null and templateName != ''">AND template_name LIKE CONCAT('%',#{templateName,jdbcType=VARCHAR},'%')</if>

JavaWeb【day09】--(Mybatis)

1. Mybatis基础操作 学习完mybatis入门后,我们继续学习mybatis基础操作。 1.1 需求 需求说明: 根据资料中提供的《tlias智能学习辅助系统》页面原型及需求,完成员工管理的需求开发。 通过分析以上的页面原型和需求,我们确定了功能列表: 查询 根据主键ID查询 条件查询 新增 更新 删除 根据主键ID删除 根据主键ID批量删除

MyBatis 切换不同的类型数据库方案

下属案例例当前结合SpringBoot 配置进行讲解。 背景: 实现一个工程里面在部署阶段支持切换不同类型数据库支持。 方案一 数据源配置 关键代码(是什么数据库,该怎么配就怎么配) spring:datasource:name: test# 使用druid数据源type: com.alibaba.druid.pool.DruidDataSource# @需要修改 数据库连接及驱动u

mybatis框架基础以及自定义插件开发

文章目录 框架概览框架预览MyBatis框架的核心组件MyBatis框架的工作原理MyBatis框架的配置MyBatis框架的最佳实践 自定义插件开发1. 添加依赖2. 创建插件类3. 配置插件4. 启动类中注册插件5. 测试插件 参考文献 框架概览 MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射,为开发者提供了极大的灵活性和便利性。以下是关于M

mybatis if test 之 0当做参数传入出问题

首先前端传入了参数 if(StringUtils.isNotBlank(status)){requestParam.setProperty("status", Integer.parseInt(status));}List<SuperPojo> applicationList = groupDao.getApplicationListByReviewStatusAndMember(req

滚雪球学MyBatis(02):环境搭建

环境搭建 前言 欢迎回到我们的MyBatis系列教程。在上一期中,我们详细介绍了MyBatis的基本概念、特点以及它与其他ORM框架的对比。通过这些内容,大家应该对MyBatis有了初步的了解。今天,我们将从理论走向实践,开始搭建MyBatis的开发环境。了解并掌握环境搭建是使用MyBatis的第一步,也是至关重要的一步。 环境搭建步骤 在开始之前,我们需要准备一些必要的工具和软件,包括J

利用Mybatis-generator工具自动生成代码

配置JAVA环境变量; 执行生成代码之前,我们须要做的准备工作。  1、新建一个文件夹,作为我们的工作空间,例如:  D:\generator  注意:这里的路径不要带有中文字符,这是规范,即使带有中文字符不会出什么问题。  2、在 generator 这路径下  (1)放置 mybatis-generator-core-1.3.2.jar;  (2)放置 mysql-connector-ja

MyBatis学习——解决字段名与实体类属性名不相同的冲突

转载地址:http://www.cnblogs.com/xdp-gacl/p/4264425.html