mysql一级缓存和二级缓存_SpringBoot+Mybatis一级缓存和二级缓存详解

本文主要介绍在SpringBoot项目中如何使用Mybatis的一级、二级缓存,为了演示方便,本文的数据库采用H2内存数据库,数据库连接池默认使用SpringBoot2.X自带的hikariCP。 正确的使用Mybatis缓存可以有效减少多余的数据库查询操作,节约IO。 接下来我们从实践出发,看一看mybatis的一级,二级缓存如何使用,相关代码请查阅:https://github.com/zhengxl5566/springboot-demo.git

1、概念介绍

什么是一级缓存 在日常开发过程中,经常会有相同的sql执行多次查询的情况,mybatis提供了一级缓存来优化这些查询,避免多次请求数据库。 一级缓存在mybatis中默认是开启的并且是session级别,它的作用域为一次sqlSession会话。

什么是二级缓存 相对于一级缓存,二级缓存的作用域更广泛,它不止局限于一个sqlSession,可以在多个sqlSession之间共享,事实上,它的作用域是namespace。 mybatis的二级缓存默认也是开启的,但由于他的作用域是namespace,所以还需要在mapper.xml中开启才能生效

缓存的优先级 通过mybatis发起的查询,作用顺序为:二级缓存->一级缓存->数据库 ,其中任何一个环节查到不为空的数据,都将直接返回结果

缓存失效 当在一个缓存作用域中发生了update、insert、delete 动作后,将会触发缓存失效,下一次查询将命中数据库,从而保证不会查到脏数据。

2、代码演示

一级缓存

默认情况下,mybatis开启并使用了一级缓存。 单元测试用例&#x

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值