MyBatis--缓存

news/2024/5/20 1:32:47/文章来源:https://blog.csdn.net/weixin_43903745/article/details/127328267

MyBatis的缓存

MyBatis的一级缓存

一级缓存是SqlSession级别的,通过 同一个SqlSession 查询的数据会被缓存,下次查询相同的数据,就会从缓存中直接获取,不会从数据库重新访问

import com.bijing.mybatis.mapper.CacheMapper;
import com.bijing.mybatis.pojo.Emp;
import com.bijing.mybatis.utils.SqlSessionUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;/*** @author 毕晶* @date 2022/10/15 16:20*/
public class CacheMapperTest {/*** MyBatis的一级缓存:默认开启* MyBatis的一级缓存是SqlSession级别的,即通过同一个SqlSession查询的数据会被缓存* 再次使用同一个SqlSession查询同一条数据,会从缓存中获取*/@Testpublic void testGetEmpById(){SqlSession sqlSession = SqlSessionUtil.getSqlSession();CacheMapper mapper = sqlSession.getMapper(CacheMapper.class);Emp emp = mapper.getEmpById(1);System.out.println(emp);Emp emp2 = mapper.getEmpById(1);System.out.println(emp2);}
}

使一级缓存失效的四种情况:

  1. 不同的SqlSession对应不同的一级缓存
  2. 同一个SqlSession但是查询条件不同
  3. 同一个SqlSession两次查询期间执行了任何一次增删改的操作
  4. 同一个SqlSession两次查询期间手动清空了缓存

MyBatis的二级缓存

二级缓存是SqlSessionFactory级别的,通过同一个SqlSessionFactory创建的SqlSession查询的结果会被缓存;此后若再次执行相同的查询语句,结果就会从缓存中获取

二级缓存开启的条件:

  1. 在核心配置文件中,设置全局配置属性cacheEnabled = “true”,默认就是true,不需要设置
  2. 在映射文件中设置标签
  3. 二级缓存必须在SqlSession关闭或者提交后有效
  4. 查询的数据所转换的实体类类型必须实现序列化的接口

使二级缓存失效的情况:
两次查询之间执行了任意的增删改,会是一级缓存和二级缓存同时失效

二级缓存的相关配置

在这里插入图片描述

MyBatis缓存查询的顺序

  1. 先查询二级缓存,因为二级缓存中可能会有其他程序已经查出来的数据,可以直接拿来用
  2. 如果二级缓存没有命中,再查询一级缓存(一级缓存只有在提交或者关闭的时候才会把数据放到二级缓存中,所以不是一级缓存中的数据二级缓存中都有)
  3. 如果一级缓存也没有命中,则查询数据库
  4. SqlSession关闭后,一级缓存中的数据会写入二级缓存

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_24051.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二手商品交易网站

摘 要 本论文主要论述了如何使用JAVA语言开发一个二手商品交易网站,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述二手商品交易网站的当前背景以及系统开发的目…

大话西游服务端开服架设服务器搭建教程

大话西游服务端开服架设服务器搭建教程 大话西游一款回合制角色扮演手游,游戏内包含人族、仙族、魔族、鬼族四大种族,每个种族各有4个角色可供玩家选择。相信很多玩这款游戏的玩家也有不少想知道自己怎么可以开一个sf,自己当服主&#xff0c…

教学设计题-教学目标

(1)知识与技能目标 基础知识与基本技能 了解/理解(概念,性质) 掌握(方法,过程) 运用/会(----)剞劂问题 (2)过程与方法目标 通过(观察…

Linux篇【2】:shell命令初步认识,Linux权限(上)

目录 1、shell命令以及运行原理 2、Linux权限的概念 3、Linux权限管理 3.1、文件访问者的分类(人) 3.2、文件类型和文件权限属性(事物属性) 1、shell命令以及运行原理 Linux严格意义上说的是一个操作系统,我们称之为" 核心(kernel) " ,但…

Jenkins配置用户权限

前几篇讲了一下有关Jenkins的一系列的操作: 在linux上搭建jenkins,并进行所需的配置 Jenkins安装插件一直失败,报错SunCertPathBuilderException的解决方案 jenkins配置拉取git远程仓库的代码并进行自动化构建部署 怎么修改Jenkins的默认…

力扣周赛314-矩阵中和能被 K 整除的路径(动态规划)

解题思路:方案数问题动态规划问题。由于只能往下或右走,递归思考,每一点a[i][j]的方案数必由其上方a[i-1][j]或左侧a[i][j-1]得到。问题关键点在于统计的是能被K整除的路径数目,看一下示例1,如果走到(3,3&a…

Kafka由浅入深(二)—— 生产者工作原理

1、生产者的流程架构 生产者主体逻辑整个生产者客户端由两个线程协调运行,这两个线程分别为主线程和Sender 线程(发送线程)。 1.1 主线程: 在主线程中由KafkaProducer 创建消息,然后通过可能的拦截器、序列化器和分区…

带你吃透Servlet核心编程下篇(完整图文教程)

本文被 系统学习JavaWeb 收录点击订阅专栏 文章目录1 Http协议1.1 什么是 HTTP 协议1.2 GET请求与POST请求1.3 响应的HTTP协议格式1.4 MIME数据类型2 HttpServletRequest类2.1 HttpServletRequest说明及常用方法2.2 HttpServletRequest类演示2.3 获取请求表单中的参数值&#x…

车车基础知识扫盲

排量 排量是指发动机气缸工作容积之和。所谓工作容积就是活塞在一个冲程内经过的区域的体积。气缸的总容积减去活塞的工作容积,剩下的就是压缩容积,压缩容积是用来燃烧的。 排量的单位是升(L),常见的排量的标识有三种,T&#xff…

SpringMvc模块

SpingMVC 模块 简介 Spring MVC是一种基于MVC架构模式的轻量级Web框架。 SpringMVC处理过程 Spring MVC的处理过程: DispatcherServlet 接收用户的请求找到用于处理request的 handler 和Interceptors,构造成 HandlerExecutionChain执行链找到 handle…

宏任务与微任务

原文:做一些动图,学习一下EventLoop (https://juejin.cn/post/6969028296893792286)一、任务队列JavaScript 是单线程执行的语言, 在同一时间只能干一件事情。如果前面的任务很耗时后面的任务就会一直等待,为了解决这个问题,js中出现了同步任务和异步任务 1.1 同步任务在主…

Linux服务器部署Mysql5.7全过程记录

1、先下载安装包文件 mysql-5.7.27-linux-glibc2.12-x86_64.tar Mysql5.7.27 Linux安装包 链接:https://pan.baidu.com/s/1p4KmDp5O2bGJLXUHOHMQFQ 提取码:4692 2、解压 cd /usr/local 切换到安装包所在目录 tar -zxvf mysql-5.7.30-l…

【数据获取】可以公开获取到的百度迁徙数据

百度迁徙数据是一种较为常用的互联网数据,在之前的文章里小编已经讲了百度迁徙数据是什么、怎么获取、该如何处理、怎么用它做和弦图这些内容。但是其中数据的获取部分一直没有详细讲解,那么该如何获取它呢? 今天,就告诉大家一个…

教学设计题-教学过程

空间中直线与平面之间的位置关系 生活中的三种位置关系的实例 直线在平面内:开门关门时,门轴所在的直线在门所在平面内 直线与平面相交:操场上,升旗的旗杆所在直线与地面所在平面相交 直线与平面平行:黑板的一条边所在…

护肤 第三课

皮肤的生长周期一般是1-2个月 所以护肤品想要其效果 一般就是这个周期才会有效果 外用护肤品只能渗透到表皮层或者真皮层的表层,只有医疗美容的方法才有机会到真皮层 黑色素 黑色素细胞在基底层 黑色素细胞能产生黑色素 黑色素的作用:吸收和散射紫外线…

A Survey on Big Data Market: Pricing, Trading and Protection

基于大数据市场:定价、交易、保护的研究 作者:FAN LIANG, WEI YU , DOU AN, QINGYU YANG, XINWEN FU, AND WEI ZHAO 文章目录基于大数据市场:定价、交易、保护的研究Abstract1.Intro2.大数据的基本概念2.1.大数据的定义2.2.大数据的好处和挑…

【23秋招c++后端面试技术突围】mysql通俗易懂的数据库连接池原理及模拟实现

什么是数据库连接池? 当系统使用JDBC技术访问数据库时会创建一个connection对象,而该对象的创建过程是非常消耗资源的,并且创建对象的时间也特别长,假设系统一天有1万次的访问量,那么一天就会有1万个connection对象被…

Acetal-NHS (SDMB),乙缩醛-琥珀酰亚胺酯

An English name:Acetal-NHS (SDMB) Chinese name:乙缩醛-琥珀酰亚胺酯 Item no:X-GF-0136 Density: PEG density is approximately 1.125 g/mL Molecular formula: Physical form:PEG products generally appear…

CMake中find_file的使用

CMake中的命令find_file用于查找指定文件(named file)的完整路径&#xff0c;其格式如下&#xff1a;将创建一个由<VAR>命名的缓存条目即cache变量&#xff0c;将<VAR>的值存入CMakeCache.txt中);或如果指定了NO_CACHE&#xff0c;由<VAR>命名的普通变量来存…

文件IO操作笔记

目录 1.文件操作 2.File类 3.流&#xff08;针对文件内容操作读写&#xff09; 3.1 InputStream 3.2 Scanner 4.练习 1.文件操作 狭义文件就是存储在硬盘上的数据&#xff0c;以“文件”为单位 广义上的文件就是操作系统负责管理硬件资源&#xff0c;操作系统&#xff08;…