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 等,也支持自定义缓存实现。

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

相关推荐
\光辉岁月/7 小时前
3.spring5-AOP
spring·代理模式·aop·spring5
东华果汁哥8 小时前
【Spring AI 实战】从零开始调用大模型接口,构建 Java AI 应用
java·人工智能·spring
2601_9628857211 小时前
AkShare 和 Tushare 哪个好?区别、场景与选型
mybatis
程序猿编码11 小时前
纯 C++ 手写 LLM 推理引擎:分页 KV 缓存、连续批、多卡张量并行全部内置
c++·深度学习·缓存·大模型推理·自动微分·模型推理
code2cat11 小时前
【随笔】RAG检索缓存:复用证据之前,先把权限和版本放进缓存键
java·人工智能·缓存·知识库·rag
java_nnnn12 小时前
Spring MVC小案例(1)
java·后端·spring·mvc
牧瀬クリスだ16 小时前
Redis五大数据类型全解析:从入门到实战
java·数据库·redis·后端·缓存
讯捷蓝达16 小时前
HPE Nimble CS3000存储,断电恢复后,双控缓存异常,存储卷无法正常启动
缓存
七夜zippoe17 小时前
Spring AI + Ollama 本地模型:数据不出内网的合规方案(落地全流程)
java·人工智能·spring·ai·ollama
captain37617 小时前
Spring Web MVC(2)
java·前端·spring boot·后端·spring·mvc