SSM--MyBatis框架之缓存

MyBatis框架之缓存

文章目录

缓存

一级缓存

Mybatis对缓存提供支持,但是在没有配置的默认情况下,它只开启一级缓存,一级缓存只是相对 于同一个SqlSession而言。

所以在参数和SQL完全一样的情况下,我们使用同一个SqlSession对象调用一个Mapper方法,往往只执行一次SQL,因为使用SelSession第一次查询后,MyBatis会 将其放在缓存中,以后再查询的时候,如果没有声明需要刷新,并且缓存没有超时的情况下, SqlSession都会取出当前缓存的数据,而不会再次发送SQL到数据库。

二级缓存

MyBatis的二级缓存是Application级别的缓存,它可以提高对数据库查询的效率,以提高应用的性能。

  • 开启二级缓存

    • 配置文件mybatis-config.xml中加入

      xml 复制代码
      <settings>
          <!-- 开启二级缓存 -->
          <setting name="cacheEnabled" value="true"/>
      </settings>
    • 在mapper.xml中开启二缓存,mapper.xml下的sql执行完成会存储到它的缓存区

      xml 复制代码
      <cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/>
      • 参数说明

        • eviction

          • LRU 最近最少使用的:移除最长时间不被使用的对象

          • FIFO 先进先出:按对象进入缓存的顺序来移除它们

          • SOFT 软引用:移除基于垃圾回收器状态和软引用规则的对象

          • WEAK 弱引用:更积极地移除基于垃圾收集器状态和弱引用规则的对象

        • flushInterval :刷新间隔,单位为毫秒

        • size :引用数目,默认值是1024

        • readOnly :只读,属性可以被设置为true或false

  • select,insert,update标签中的缓存属性

    • useCache=false 禁用二级缓存
    • flushCache=true 刷新缓存 ,一般用于insert,update
相关推荐
SeaDhdhdhdhdh1 小时前
MCP Server 搭建与使用指南
java·ai·agent·mcp
YH55269842 小时前
GPT‑5.6 Sol 原本支持 1M 上下文,Codex 现已放开此前限制,如何看待这次调整?
java·jvm·人工智能·gpt·算法·chatgpt
AI_小站2 小时前
刚面完百度的 Agent 开发岗,我才发现:世界就是个巨大的草台班子
java·开发语言·人工智能·spring·百度·langchain
许彰午3 小时前
03-三种开发模式
java·架构
涟漪海洋3 小时前
创建最新的JDK25镜像,非root环境启动
java
Rain的Java大神之路4 小时前
短信接口被狂刷怎么处理
java·运维·后端·web安全·面试·架构·xss
2602_959960924 小时前
谢飞机面试大厂:Spring Boot、JVM、Redis、Kafka、微服务与音视频搜索场景求生实录
java·jvm·spring boot·redis·面试题
Zane1994124 小时前
CAS 与原子类:Java 如何实现无锁编程
java·开发语言
略略略咯咯5 小时前
AI玩具-study
java
深念Y5 小时前
SSD 寿命洁癖:编译过程不入盘的原则与实践
缓存·io·内存·编译·ssd·读取·写入