Mybatis缓存机制

MyBatis 中的缓存机制可以帮助提高数据库访问性能,减少不必要的数据库查询。MyBatis 默认提供了两级缓存:一级缓存和二级缓存。

  1. 一级缓存

    • 一级缓存是指 MyBatis 在同一个 SqlSession 中的缓存,它是 SqlSession 级别的缓存。
    • 当同一个 SqlSession 中执行相同的查询时,如果查询结果在缓存中存在,MyBatis 将直接从缓存中获取结果,而不会再次向数据库发送查询请求。
    • 一级缓存是 MyBatis 默认开启的,无法关闭,它可以有效地减少相同查询的重复执行次数。
  2. 二级缓存

    • 二级缓存是指 MyBatis 在多个 SqlSession 之间共享的缓存,它是 Mapper 级别的缓存。
    • 当不同的 SqlSession 执行相同的查询时,如果查询结果在缓存中存在,MyBatis 将直接从缓存中获取结果,而不会向数据库发送查询请求。
    • 二级缓存可以提高多个 SqlSession 之间的查询性能,减少数据库查询次数,但是它是可选的,需要手动配置和开启。

配置 MyBatis 的二级缓存需要在 Mapper.xml 文件中添加 <cache> 标签,并指定缓存的类型和其他相关属性。例如:

xml 复制代码
<cache type="org.mybatis.caches.ehcache.EhcacheCache"/>

以上配置了一个使用 Ehcache 作为二级缓存的示例。MyBatis 还支持其他类型的缓存,如 PerpetualCache、FifoCache、LRUCache 等,也支持自定义缓存实现。

需要注意的是,缓存的有效性是有限的,当数据库中的数据发生变化时,缓存中的数据也会失效。因此,在使用缓存时需要谨慎考虑缓存的策略和失效机制,以确保缓存的一致性和正确性。

相关推荐
想用offer打牌31 分钟前
Spring AI Alibaba与 Agent Scope到底选哪个?
java·人工智能·spring
crossaspeed1 小时前
Java-SpringBoot的启动流程(八股)
java·spring boot·spring
lpfasd1232 小时前
springcloud docker 部署问题排查与解决方案
spring·spring cloud·docker
qqqahhh2 小时前
xml文件的动态化配置,导入
xml·spring·springboot
BullSmall2 小时前
SEDA (Staged Event-Driven Architecture, 分阶段事件驱动架构
java·spring·架构
蓝眸少年CY4 小时前
(第七篇)spring cloud之Hystrix断路器
spring·spring cloud·hystrix
技术宅星云5 小时前
0x00.Spring AI Agent开发指南专栏简介
java·人工智能·spring
蓝眸少年CY5 小时前
(第八篇)spring cloud之zuul路由网关
后端·spring·spring cloud
long3166 小时前
弗洛伊德·沃肖算法 Floyd Warshall Algorithm
java·后端·算法·spring·springboot·图论
IT 行者7 小时前
深入理解 OAuth2/OIDC 中的 Issuer:身份认证的基石
spring