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
相关推荐
逻辑驱动的ken20 小时前
Java高频面试考点场景题21
java·开发语言·面试·职场和发展·求职招聘
番茄去哪了20 小时前
单体转微服务:正确的拆分思路与实战原则(上)
java·微服务·架构
AI进化营-智能译站20 小时前
ROS2 C++开发系列19-枚举定义机器人状态机|随机数生成仿真测试数据流
java·c++·ai·机器人
fengxin_rou20 小时前
黑马点评项目万字总结:从redis基础到实战应用详解
java·开发语言·分布式·后端·黑马点评
dEso RSET20 小时前
FrankenPHP实践
java
风筝在晴天搁浅20 小时前
设置一个带超时时间的LRU缓存
缓存
逸Y 仙X20 小时前
文章二十:Elasticsearch高亮搜索完全指南
java·大数据·运维·elasticsearch·搜索引擎·全文检索
AI进化营-智能译站20 小时前
ROS2 C++开发系列18-STL容器实战:deque缓存激光雷达数据|priority_queue调度任务
开发语言·c++·缓存·ai
Lyyaoo.20 小时前
【JAVA Spring面经】Spring 事务失效情况
java·数据库·spring
salipopl20 小时前
Spring Boot 整合 Druid 并开启监控
java·spring boot·后端