首页 > 其他分享 >MyBatis的缓存

MyBatis的缓存

时间:2025-01-02 20:27:14浏览次数:3  
标签:缓存 同一个 二级缓存 查询 SqlSession MyBatis 一级

Mybatis的一级缓存

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

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

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

Mybatis的二级缓存

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

二级缓存开启的条件:

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

使二级缓存失效的情况:

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

标签:缓存,同一个,二级缓存,查询,SqlSession,MyBatis,一级
From: https://blog.csdn.net/m0_63197684/article/details/144894288

相关文章

  • 从源码解释为什么执行MyBatis接口就可以执行SQL
    1:场景分析在我们使用SpringBoot+MyBatis的时候,我们一般是先引入依赖,然后配置mybatis:mapper-locations:classpath:mapper/*.xmltype-aliases-package:com.coco.pojo当然还要在启动类上加上一个注解这时候,就可以编写一个接口,然后调用这个方法就可以执行配置文......
  • 前端超大缓存IndexDB、入门及实际使用
    文章目录往期回顾项目实战初始化表获取列表新增表的数据项获取详情根据ID获取详情根据其他字段获取详情删除数据总结往期回顾在之前的文章中,我们介绍了IndexDBvsCookiesvsSession这几个的对比,但是没有做实际项目的演示,今天我们用实际项目来演示IndexDB的便捷......
  • MyBatis 结果映射详解:resultType 与 resultMap
    MyBatis结果映射详解:resultType与resultMap在MyBatis中,结果映射是将数据库查询结果集(ResultSet)映射到Java对象的关键步骤。MyBatis提供了两种主要的方式来处理结果映射:resultType和resultMap。本文将详细介绍这两种方式的使用场景、配置方法以及最佳实践,帮助开发者更好......
  • 缓存雪崩及解决办法
    缓存雪崩是指在缓存系统中,由于大量缓存数据在同一时间失效,导致大量原本可以直接从缓存中获取数据的请求直接转向数据库或后端服务,从而给数据库或后端服务带来巨大的压力,甚至可能导致系统崩溃的一种现象。以下是缓存雪崩的一些特点和影响:一、产生原因过期时间设置不合理:......
  • 为什么需要浏览器缓存?
    浏览器缓存对于前端开发来说非常重要,主要有以下几个原因:提高加载速度:当用户再次访问已经访问过的页面时,如果页面内容没有变化,浏览器可以直接从本地缓存中加载资源,而不需要从服务器重新下载。这大大减少了网络请求的时间和带宽消耗,从而提高了页面的加载速度。减轻服务器压力:......
  • MyBatis-Plus BaseMapper 实现原理
    原文:MyBatis-Plus的BaseMapper实现原理MyBatis-Plus自定义通用Mapper方法MyBatis-Plus提供了一些通用的Mapper方法,例如insert、update、selectById等。通过让自定义的Mapper继承BaseMapper类,我们可以直接调用这些基础的SQL方法,而无需自己编写SQL。publicinter......
  • 由 Mybatis 源码畅谈软件设计(五):ResultMap 的循环引用
    作者:京东保险王奕龙本节我们来了解Mybatis是如何处理ResultMap的循环引用,它的解决方案非常值得在软件设计中参考。另外作为引申,大家可以了解一下Spring是如何解决Bean的循环注入的。以单测org.apache.ibatis.submitted.permissions.PermissionsTest#checkNestedResult......
  • 在 MyBatis-Plus 中使用 IN 语法
    在MyBatis-Plus中使用IN语法在MyBatis-Plus中使用IN​语法可以通过以下几种方式实现:1.使用QueryWrapper​的in​方法​QueryWrapper​是MyBatis-Plus提供的查询条件构造器,可以使用in​方法来构建IN​查询。importcom.baomidou.mybatisplus.core.conditio......
  • 由 Mybatis 源码畅谈软件设计(七):从根上理解 Mybatis 一级缓存
    作者:京东保险王奕龙本篇我们来讲一级缓存,重点关注它的实现原理:何时生效、生效范围和何时失效,在未来设计缓存使用时,提供一些借鉴和参考。1.准备工作定义实体publicclassDepartment{publicDepartment(Stringid){this.id=id;}privateStri......
  • LVGL-C 实现一个文件持久性缓存,用于存储配置相关数据
    实现功能描述:基于linux嵌入式平台开发App,在未移植数据库的情况下,文件存储是一个不错的持久性数据存储手段。创建代码文件:configcache.hconfigcache.c1.数据结构的结构体封装点击查看代码//配置信息结构typedefstruct{char*key;char*v......