MyBatis<一级二级缓存><缓存更新机制>

MyBatis的一级、二级缓存(SpringBoot中)

  1. 一级缓存(SqlSession缓存):
    • 一级缓存是MyBatis中默认开启的缓存级别,它是指在同一个SqlSession中进行的多次查询操作会将查询结果缓存到内存中,这样在相同的查询操作被重复执行时,MyBatis会直接从内存中获取结果,避免了对数据库的多次访问,从而提高了查询性能。
    • 一级缓存是SqlSession级别的缓存,它的作用范围仅限于一个SqlSession,当SqlSession关闭时,一级缓存也会被清空。
    • 默认情况下,一级缓存是开启的,不需要额外的配置。
  1. 二级缓存(SqlSessionFactory全局缓存):
    • 二级缓存是在SqlSessionFactory级别进行缓存的,它可以被多个SqlSession共享,当多个SqlSession执行相同的查询操作时,会共享相同的查询结果。
    • 二级缓存的作用范围是全局的,它可以跨越多个SqlSession,因此适用于多个SqlSession之间频繁执行相同查询操作的场景。
    • 使用二级缓存需要手动进行配置,并且需要在Mapper映射文件中显式开启缓存。
    • SqlSessionFactory 是全局级别的,用于创建 SqlSession,在整个应用程序中共享。

application.properties中的配置示例:

# 开启MyBatis的二级缓存
mybatis.configuration.cache-enabled=true

application.yml中的配置示例:

# 开启MyBatis的二级缓存
mybatis:
  configuration:
    cache-enabled: true

在Mapper XML文件中使用标签来指定需要开启二级缓存的Mapper。

<!-- UserMapper.xml -->
<mapper namespace="com.example.UserMapper">
  <cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/>
  <!-- 其他SQL语句的配置... -->
</mapper>

数据更新机制

对于缓存数据更新机制,当某一个作用域(一级缓存SqlSession/二级缓存SqlSessionFactory)进行了增/删/改操作后,默认该作用域下所有select中的缓存将被clear。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值