当前位置: 首页 > news >正文

七、Mybatis-缓存

文章目录

  • 缓存
    • 一级缓存
    • 二级缓存
      • 1.概念
      • 2.二级缓存开启的条件:
      • 3.使二级缓存失效的情况:
      • 4.在mapper配置文件中添加的cache标签可以设置一些属性:
      • 5.MyBatis缓存查询的顺序

缓存

一级缓存

级别为sqlSession,Mybatis默认开启一级缓存。

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

  • 不同的SqlSession对应不同的一级缓存

  • 同一个SqlSession但是查询条件不同

  • 同一个SqlSession两次查询期间执行了任何一次增删改操作

  • 同一个SqlSession两次查询期间手动清空了缓存

二级缓存

1.概念

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

2.二级缓存开启的条件:

  • 在核心配置文件中,设置全局配置属性cacheEnafled=“true”,默认为true,不需要设置
  • 在映射文件中设置标签< cache />
  • 二级缓存必须在SqlSession关闭或提交之后有效
  • 查询的数据所转换的实体类类型必须实现序列化的接口

3.使二级缓存失效的情况:

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

4.在mapper配置文件中添加的cache标签可以设置一些属性:

  • eviction属性:缓存回收策略
    LRUlLeast Recently Used)-最近最少使用的:移除最长时间不被使用的对象。
    FIFO(First in First out)-先进先出:按对象进入缓存的顺序来移除它们。
    SOFT-软引用:移除基于垃圾回收器状态和软引用规则的对象。
    WEAK-弱引用:更积极地移除基于垃圾收集器状态和弱引用规则的对象。
    默认的是 LRU。
  • flushInterval属性:刷新间隔,单位毫秒默认情况是不设置,也就是没有刷新间隔,缓存仅仅调用语句时刷新
  • size属性:引用数目,正整数 代表缓存最多可以存储多少个对象,太大容易导致内存溢出
  • readOnly属性:只读,true/false
    true:只读缓存;会给所有调用者返回缓存对象的相同实例。因此这些对象不能被修改。这提供了很重要的性能优势。
    false:读写缓存;会返回缓存对象的拷贝(通过序列化)。这会慢一些,但是安全,因此默认是 false。

5.MyBatis缓存查询的顺序

  1. 先查询二级缓存,因为二级缓存中可能会有其他程序已经查出来的数据,可以拿来直接使用。
  2. 如果二级缓存没有命中,再查询一级缓存。如果一级缓存也没有命中,则查询数据库
  3. SqlSession关闭之后,一级缓存中的数据会写入二级缓存

相关文章:

七、Mybatis-缓存

文章目录 缓存一级缓存二级缓存1.概念2.二级缓存开启的条件:3.使二级缓存失效的情况&#xff1a;4.在mapper配置文件中添加的cache标签可以设置一些属性:5.MyBatis缓存查询的顺序 缓存 一级缓存 级别为sqlSession&#xff0c;Mybatis默认开启一级缓存。 使一级缓存失效的四种…...

数据结构(六)——图的应用

6.4 图的应用 6.4.1 最小生成树 对于⼀个带权连通⽆向图G (V, E)&#xff0c;⽣成树不同&#xff0c;每棵树的权&#xff08;即树中所有边上的权值之和&#xff09;也可能不同。设R为G的所有⽣成树的集合&#xff0c;若T为R中边的权值之和最小的生成树&#xff0c;则T称为G的…...

java自动化测试学习-03-06java基础之运算符

运算符 算术运算符 运算符含义举例加法&#xff0c;运算符两侧的值相加ab等于10-减法&#xff0c;运算符左侧减右侧的值a-b等于6*乘法&#xff0c;运算符左侧的值乘以右侧的值a*b等于16/除法&#xff0c;运算符左侧的值除以右侧的值a/b等于4%取余&#xff0c;运算符左侧的值除…...

【VASP学习】在Ubuntu系统安装vasp.5.4.4的全过程(包括VASP官方学习资料、安装过程中相关编辑器的配置、VASP的编译及VASP的测试)

在Ubuntu系统安装vasp.5.4.4的全过程 VASP的简介与相关学习资料安装前的准备工作及说明安装过程intel编译器的安装VASP的编译VASP的测试 参考来源 VASP的简介与相关学习资料 VASP(Vienna Ab initio Simulation Package)是基于第一性原理对原子尺度的材料进行模拟计算的软件。比…...

PyTorch|Dataset与DataLoader使用、构建自定义数据集

文章目录 一、Dataset与DataLoader二、自定义Dataset类&#xff08;一&#xff09;\_\_init\_\_函数&#xff08;二&#xff09;\_\_len\_\_函数&#xff08;三&#xff09;\_\_getitem\_\函数&#xff08;四&#xff09;全部代码 三、将单个样本组成minibatch&#xff08;Data…...

4.6(信息差)

&#x1f30d; 山西500千伏及以上输电线路工程首次采用无人机AI自主验收 &#x1f30b; 中国与泰国将开展国际月球科研站等航天合作 ✨ 网页版微软 PowerPoint 新特性&#xff1a;可直接修剪视频 &#x1f34e; 特斯拉开始在德国超级工厂生产出口到印度的右舵车 1.马斯克&…...

关于C#操作SQLite数据库的一些函数封装

主要功能&#xff1a;增删改查、自定义SQL执行、批量执行&#xff08;事务&#xff09;、防SQL注入、异常处理 1.NuGet中安装System.Data.SQLite 2.SQLiteHelper的封装&#xff1a; using System; using System.Collections.Generic; using System.Data.SQLite; using System.…...

LeetCode-79. 单词搜索【数组 字符串 回溯 矩阵】

LeetCode-79. 单词搜索【数组 字符串 回溯 矩阵】 题目描述&#xff1a;解题思路一&#xff1a;回溯 回溯三部曲。这里比较关键的是给board做标记&#xff0c;防止之后搜索时重复访问。解题思路二&#xff1a;回溯算法 dfs,直接看代码,很容易理解。visited哈希&#xff0c;防止…...

游戏引擎之高级动画技术

一、动画混合 当我们拥有各类动画素材&#xff08;clips&#xff09;时&#xff0c;要将它们融合起来成为一套完整的动画。 最经典的例子就是从走的动画自然的过渡到跑的动画。 1.1 线性插值 不同于上节课的LERP&#xff08;同一个clip内不同pose之间&#xff09;&#xff…...

Oracle 数据库中的全文搜索

Oracle 数据库中的全文搜索 0. 引言1. 整体流程2. 创建索引2-1. 创建一个简单的表2-2. 创建文本索引2-3. 查看创建的基础表 3. 运行查询3-1. 运行文本查询3-2. CONTAINS 运算符3-3. 混合查询3-4. OR 查询3-5. 通配符3-6. 短语搜索3-7. 模糊搜索&#xff08;Fuzzy searches&…...

代码随想录阅读笔记-二叉树【二叉搜索树中的众数】

题目 给定一个有相同值的二叉搜索树&#xff08;BST&#xff09;&#xff0c;找出 BST 中的所有众数&#xff08;出现频率最高的元素&#xff09;。 假定 BST 有如下定义&#xff1a; 结点左子树中所含结点的值小于等于当前结点的值结点右子树中所含结点的值大于等于当前结点的…...

AcWing-游戏

1388. 游戏 - AcWing题库 所需知识&#xff1a;博弈论&#xff0c;区间dp 由于双方都采取最优的策略来取数字&#xff0c;所以结果为确定的&#xff0c;有可能会有多个不同的过程&#xff0c;但是我们只需要关注最终结果就行了。 方法一&#xff1a; 定义dp[i][j] 表示区间…...

Mybatis——一对一映射

一对一映射 预置条件 在某网络购物系统中&#xff0c;一个用户只能拥有一个购物车&#xff0c;用户与购物车的关系可以设计为一对一关系 数据库表结构&#xff08;唯一外键关联&#xff09; 创建两个实体类和映射接口 package org.example.demo;import lombok.Data;import …...

Web 安全之 SSL 剥离攻击详解

目录 SSL/TLS简介 SSL 剥离攻击原理 SSL 剥离攻击的影响 SSL 剥离攻击的防范措施 小结 SSL 剥离攻击&#xff08;SSL Stripping Attack&#xff09;是一种针对安全套接层&#xff08;SSL&#xff09;或传输层安全性&#xff08;TLS&#xff09;协议的攻击手段&#xff0c;…...

数据结构——顺序表(C语言)

目录 一、顺序表概念 二、顺序表分类 1.静态顺序表 2.动态顺序表 三、顺序表的实现 1.顺序表的结构体定义 2. 顺序表初始化 3.顺序表销毁 4.顺序表的检验 5.顺序表打印 6.顺序表扩容 7.顺序表尾插与头插 8.尾删与头删 9.在pos处插入数据 10.在pos处删除数据 11.查找数据 …...

利用Idea实现Ajax登录(maven工程)

一、新建一个maven工程&#xff08;不会建的小伙伴可以参考Idea引入maven工程依赖(保姆级)-CSDN博客&#xff09;&#xff0c;工程目录如图 ​​​​​​​ js文件可以上up网盘提取 链接&#xff1a;https://pan.baidu.com/s/1yOFtiZBWGJY64fa2tM9CYg?pwd5555 提取码&…...

环信IM集成教程——Web端UIKit快速集成与消息发送

写在前面&#xff1a; 千呼万唤始出来&#xff0c;环信Web端终于出UIKit了&#xff01;&#x1f389;&#x1f389;&#x1f389; 文档地址&#xff1a;https://doc.easemob.com/uikit/chatuikit/web/chatuikit_overview.html 环信单群聊 UIKit 是基于环信即时通讯云 IM SDK 开…...

Anaconda如何切换国内镜像源

一、anaconda如何切换阿里镜像源 在Anaconda中切换到阿里云镜像源可以通过以下步骤进行&#xff1a; 1、打开终端&#xff08;Windows&#xff09;或者命令行界面&#xff08;macOS/Linux&#xff09;。 2、执行以下命令来配置阿里云镜像源&#xff1a; conda config --add…...

Android 14.0 添加自定义服务,并生成jar给第三方app调用

1.概述 在14.0系统ROM产品定制化开发中,由于需要新增加自定义的功能,所以要增加自定义服务,而app上层通过调用自定义服务,来调用相应的功能,所以系统需要先生成jar,然后生成jar 给上层app调用,接下来就来分析实现的步骤,然后来实现相关的功能 从而来实现所需要的功能 …...

解决沁恒ch592单片机在tmos中使用USB总线时,接入USB Hub无法枚举频繁Reset的问题

开发产品时采用了沁恒ch592&#xff0c;做USB开发时遇到了一个奇葩的无法枚举问题。 典型症状 使用USB线直连电脑时没有问题&#xff0c;可以正常使用。 如果接入某些特定方案的USB Hub&#xff08;例如GL3510、GL3520&#xff09;&#xff0c;可能会出现以下2种情况&#xf…...

51单片机项目避坑:用ADC0804读PT100信号,你的滤波和标度变换做对了吗?(附源码分析)

51单片机PT100温度检测实战&#xff1a;从ADC采样到标度变换的完整设计解析 在工业温度测量领域&#xff0c;PT100凭借其优异的线性度和稳定性成为首选传感器之一。不同于常见的DS18B20数字温度传感器&#xff0c;PT100需要配合精密信号调理电路和AD转换器才能实现准确测量。本…...

基于Spring AI的MCP服务开发实战指南

1. Spring AI与MCP服务初探 第一次接触Spring AI框架时&#xff0c;我就被它简洁优雅的API设计所吸引。作为Spring生态中专门为AI应用开发提供的工具集&#xff0c;它让Java开发者能够像开发普通Web应用一样轻松构建AI服务。而MCP&#xff08;Model Calling Protocol&#xff0…...

百川2-13B-4bits量化版对比测试:OpenClaw日常任务执行效率报告

百川2-13B-4bits量化版对比测试&#xff1a;OpenClaw日常任务执行效率报告 1. 测试背景与动机 最近在折腾OpenClaw自动化工作流时&#xff0c;发现一个棘手问题&#xff1a;当任务链条较长时&#xff0c;本地部署的大模型显存占用会飙升到16GB以上&#xff0c;导致我的RTX 30…...

GPT-5-Codex CLI实战:如何用UIUIApi中转服务稳定获取API Key(避坑指南)

GPT-5-Codex CLI高效实践&#xff1a;国内开发者API接入全流程解析 最近在技术社区里&#xff0c;关于GPT-5-Codex的讨论热度持续攀升。作为一名长期关注AI编程工具的开发者&#xff0c;我发现很多同行在尝试接入这项服务时遇到了各种技术障碍。本文将分享一套经过实战验证的完…...

HertzBeat与Prometheus兼容性详解:平滑迁移和生态整合终极指南

HertzBeat与Prometheus兼容性详解&#xff1a;平滑迁移和生态整合终极指南 Apache HertzBeat是一款功能强大的开源实时监控系统&#xff0c;与Prometheus生态系统完美兼容&#xff0c;提供无代理、高性能集群和自定义监控功能。&#x1f680; 作为新一代监控工具&#xff0c;H…...

Thorium浏览器:重新定义现代网页浏览性能标准

Thorium浏览器&#xff1a;重新定义现代网页浏览性能标准 【免费下载链接】thorium Chromium fork named after radioactive element No. 90. Windows and MacOS/Raspi/Android/Special builds are in different repositories, links are towards the top of the README.md. …...

Webots仿真实战:如何用C语言控制四轮小车实现自动行驶

Webots仿真实战&#xff1a;C语言控制四轮小车自动行驶全攻略 引言 在机器人开发领域&#xff0c;仿真环境的重要性不言而喻。它不仅能大幅降低硬件成本&#xff0c;还能加速开发周期&#xff0c;让开发者专注于算法和控制逻辑的优化。Webots作为一款专业的机器人仿真软件&…...

Cursor+Qt5.12.12开发环境配置全攻略:从插件安装到项目构建

CursorQt5.12.12开发环境配置全攻略&#xff1a;从插件安装到项目构建 对于刚接触Qt开发或从其他IDE迁移到Cursor的开发者来说&#xff0c;配置一个高效的开发环境是首要任务。Qt5.12.12作为长期支持版本(LTS)&#xff0c;在稳定性和兼容性方面表现优异&#xff0c;而Cursor作为…...

直流电机选型避坑指南:STM32项目为什么推荐TB6612而不是L298N?

STM32直流电机驱动芯片深度对比&#xff1a;TB6612与L298N实战选型指南 在嵌入式开发领域&#xff0c;直流电机驱动方案的选择往往决定了整个项目的稳定性和能效表现。面对市面上众多的驱动芯片&#xff0c;如何根据项目需求做出最优选择&#xff1f;本文将基于实测数据&#x…...

手把手教你用STM32驱动迪文屏:从RS232配置到页面控件交互全流程

STM32与迪文屏深度开发实战&#xff1a;工业级GUI交互全解析 迪文屏作为工业控制领域广泛采用的HMI解决方案&#xff0c;其与STM32的协同工作能力已成为嵌入式开发者的必备技能。不同于传统TFT-LCD的简单驱动&#xff0c;迪文屏通过串口协议实现的动态交互&#xff0c;为设备控…...