mybatis 缓存

MyBatis缓存

MyBatis可以非常方便地定制和配置缓存,自带两级缓存。为提高扩展性,用户可以实现MyBatis的Cache接口来定义自己缓存。

一级缓存:默认开启,基于SqlSession级别,也称为本地缓存

二级缓存:在核心配置文件中是默认开启,基于namespace级别,需要手动地在mapper.xml文件中配置<cache/>

注意点:

1、所有数据先提交到一级缓存中

2、当会话提交或关闭的时候,数据才从一级缓存转存到二级缓存中

3、二级缓存的作用域是同一个Mapper下     

如何开启二级缓存?     

1、在核心配置文件中使能所有的二级缓存(默认是开启的)

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

2、在需要使用二级缓存的Mapper.xml 配置二级缓存

<!--开启当前Mapper的二级缓存-->
<cache/>

也可以对cache标签内的属性进行配置

3、别忘了将实体类序列化(实现Serializable接口) 

public class User implements Serializable {//开启二级缓存,需要序列化实体类
...
}

 

MyBatis缓存的访问顺序

当用户需要读取数据库中的数据:

首先MyBatis先去二级缓存中查看有没有数据,

如果没有,则再去一级缓存中查找,

如果还没有,最后才去查询数据库。

MyBatis缓存

缓存也有失效的时候

1、查询了不同的数据

2、执行了增删改操作,缓存会被刷新

3、查询不同的mapper

4、手动清理了缓存

  sqlSession.clearCache();

 

参考 https://www.bilibili.com/video/BV1NE411Q7Nx?p=29

 

posted @ 2021-02-14 14:43  Fabulous~  阅读(6)  评论(0编辑  收藏  举报