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的mapper文件中#和$的区别示例解析

《Mybatis的mapper文件中#和$的区别示例解析》MyBatis的mapper文件中,#{}和${}是两种参数占位符,核心差异在于参数解析方式、SQL注入风险、适用场景,以下从底层原理、使用场... 目录MyBATis 中 mapper 文件里 #{} 与 ${} 的核心区别一、核心区别对比表二、底

MyBatis-Plus逻辑删除实现过程

《MyBatis-Plus逻辑删除实现过程》本文介绍了MyBatis-Plus如何实现逻辑删除功能,包括自动填充字段、配置与实现步骤、常见应用场景,并展示了如何使用remove方法进行逻辑删除,逻辑删... 目录1. 逻辑删除的必要性编程1.1 逻辑删除的定义1.2 逻辑删php除的优点1.3 适用场景2.

MyBatis配置文件中最常用的设置

《MyBatis配置文件中最常用的设置》文章主要介绍了MyBatis配置的优化方法,包括引用外部的properties配置文件、配置外置以实现环境解耦、配置文件中最常用的6个核心设置以及三种常用的Ma... 目录MyBATis配置优化mybatis的配置中引用外部的propertis配置文件⚠️ 注意事项X

MyBatis中的两种参数传递类型详解(示例代码)

《MyBatis中的两种参数传递类型详解(示例代码)》文章介绍了MyBatis中传递多个参数的两种方式,使用Map和使用@Param注解或封装POJO,Map方式适用于动态、不固定的参数,但可读性和安... 目录✅ android方式一:使用Map<String, Object>✅ 方式二:使用@Param

MyBatis-Plus使用动态表名分表查询的实现

《MyBatis-Plus使用动态表名分表查询的实现》本文主要介绍了MyBatis-Plus使用动态表名分表查询,主要是动态修改表名的几种常见场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录1. 引入依赖2. myBATis-plus配置3. TenantContext 类:租户上下文

Spring Boot 集成 mybatis核心机制

《SpringBoot集成mybatis核心机制》这篇文章给大家介绍SpringBoot集成mybatis核心机制,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值... 目录Spring Boot浅析1.依赖管理(Starter POMs)2.自动配置(AutoConfigu

在SpringBoot+MyBatis项目中实现MySQL读写分离的实战指南

《在SpringBoot+MyBatis项目中实现MySQL读写分离的实战指南》在SpringBoot和MyBatis项目中实现MySQL读写分离,主要有两种思路:一种是在应用层通过代码和配置手动控制... 目录如何选择实现方案核心实现:应用层手动分离实施中的关键问题与解决方案总结在Spring Boot和

使用MyBatis TypeHandler实现数据加密与解密的具体方案

《使用MyBatisTypeHandler实现数据加密与解密的具体方案》在我们日常的开发工作中,经常会遇到一些敏感数据需要存储,比如用户的手机号、身份证号、银行卡号等,为了保障数据安全,我们通常会对... 目录1. 核心概念:什么是 TypeHandler?2. 实战场景3. 代码实现步骤步骤 1:定义 E

MyBatis中的大于等于、小于等于写法

《MyBatis中的大于等于、小于等于写法》MyBatisXML映射文件中处理大于等于和小于等于符号的两种方法:使用转义字符和CDATA块,转义字符更为常见,而CDATA块则提供了一种更易读的解决方案... 目录1. 使用转义字符(推荐)2. 使用 CDATA 块注意事项总结在 MyBATis 的 XML

springboot+mybatis一对多查询+懒加载实例

《springboot+mybatis一对多查询+懒加载实例》文章介绍了如何在SpringBoot和MyBatis中实现一对多查询的懒加载,通过配置MyBatis的`fetchType`属性,可以全局... 目录springboot+myBATis一对多查询+懒加载parent相关代码child 相关代码懒