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

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

相关推荐
遇见你...12 分钟前
A01-Spring概述
java·后端·spring
空空潍6 小时前
Spring AI与LangChain对比:组件对应关系、设计差异与选型指南
人工智能·spring·langchain
chools7 小时前
Java后端拥抱AI开发之个人学习路线 - - Spring AI【第一期】
java·人工智能·学习·spring·ai
冲上云霄的Jayden8 小时前
Spring Ai WebClient、RestClient设置代理
spring·webclient·代理·restclient·gemini·region·springai
geBR OTTE8 小时前
SpringBoot(整合MyBatis + MyBatis-Plus + MyBatisX插件使用)
spring boot·tomcat·mybatis
Aroaku9 小时前
Spring AOP 实现原理
spring
心勤则明9 小时前
Spring AI Alibaba MCP Gateway:将存量服务转换成 MCP Server
人工智能·spring·gateway
尽兴-9 小时前
Elasticsearch 性能调优指南:写入、检索、聚合与缓存全链路优化
大数据·elasticsearch·缓存·性能优化·es 读写原理
有毒的教程10 小时前
Ubuntu 清理 Docker 镜像 / 容器 / 缓存 完整教程
ubuntu·缓存·docker
Alfredorw10 小时前
Mybatis-Plus的使用
mybatis