MyBatis缓存

缓存

MyBatis内置了一个强大的事务性查询缓存机制,它可以非常方便的配置和定制。
MyBatis有两种缓存,一级缓存和二级缓存。

一级缓存

一级缓存即本地缓存,作用域默认为sqlSession。当Session flush或close后,该Session中的所有Cache将被清空。本地缓存不能被关闭,但可以调用clearCahe()来清空本地缓存。同一次会话期间只要查询过的数据都会保存在当前SqlSession的Map中。

一级缓存失效的四种情况:

  • 不同的SqlSession对应不同的一级缓存
  • 同一个SqlSession但查询条件不一样
  • 同一个SqlSession两次查询期间执行了任何一次增删改,增删改会刷新缓存
  • 同一个SqlSession两次查询期间手动刷新了缓存

二级缓存

二级缓存,全局作用域缓存。二级缓存默认不开启,需要手动配置。二级缓存默认不开启。需要手动配置。二级缓存在SqlSession关闭或者提交之后才会生效。

在全局配置文件中开启二级缓存

<setting name="cacheEnabled" value="true"/>

需要使用二级缓存得映射文件处使用cache配置缓存

<cache eviction="FIFO" size="10000"/>

MyBatis提供二级缓存的接口以及实现,缓存实现要求POJO实现Serializable接口

缓存相关属性:
在这里插入图片描述
缓存有关设置:

  • 全局setting得cacheEnabled:是否开启二级缓存
  • select标签的useCache属性:是否使用二级缓存
  • sql标签的flushCache属性
  • sqlSession.clearCache清理一级缓存

参照缓存:若想在命名空间中共享相同的缓存配置和实例。可以使用cache-ref引用

<cache-ref namespace="com.gz.mybatis01.UserDao"/>

缓存查询顺序

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值