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

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

相关推荐
也许是_2 小时前
大模型应用技术之 Spring AI 2.0 变更说明
java·人工智能·spring
running up3 小时前
MyBatis 核心知识点与实战
数据库·oracle·mybatis
CodeAmaz5 小时前
Spring循环依赖与三级缓存详解
spring·循环依赖·三级缓存
落霞的思绪6 小时前
Mybatis读取PostGIS生成矢量瓦片实现大数据量图层的“快显”
linux·运维·mybatis·gis
diudiu96287 小时前
Maven配置阿里云镜像
java·spring·阿里云·servlet·eclipse·tomcat·maven
222you10 小时前
SpringAOP的介绍和入门
java·开发语言·spring
Alluxio10 小时前
Alluxio正式登陆Oracle云市场,为AI工作负载提供TB级吞吐量与亚毫秒级延迟
人工智能·分布式·机器学习·缓存·ai·oracle
CodeAmaz10 小时前
Spring编程式事务详解
java·数据库·spring
谷哥的小弟11 小时前
Spring Framework源码解析——RequestContext
java·后端·spring·框架·源码
画江湖Test12 小时前
分布式缓存穿透解决方案
分布式·缓存·电商系统·缓存解决方案