Mybatis缓存的原理是什么

发布时间:2021-06-15 15:12:50 作者:Leah
来源:亿速云 阅读:133

Mybatis缓存的原理是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

1、什么是缓存[Cache]

2、为什么要使用缓存

减少和数据库的交互次数,减少系统开销,提高系统效率。

3、什么样的数据需要使用缓存

经常查询且不易改变的数据

4、Mybatis缓存

5、一级缓存

一级缓存也叫本地缓存:

6、一级缓存失效的四种情况

@Test
public void testQueryUserById(){
  SqlSession session = MybatisUtils.getSession();
  UserMapper mapper = session.getMapper(UserMapper.class);
  User user = mapper.queryUserById(1);
  System.out.println(user);
  session.clearCache();//手动清除缓存
  User user2 = mapper.queryUserById(1);
  System.out.println(user2);
  System.out.println(user==user2);
  session.close();
}

所以说,一级缓存就是一个map

7、二级缓存

使用步骤:

核心配置文件

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

去每个mapper.xml中配置使用二级缓存,这个配置非常简单;

方式一:

<cache/>

方式二:

<cache
 eviction="FIFO"
 flushInterval="60000"
 size="512"
 readOnly="true"/>

这个更高级的配置创建了一个 FIFO 缓存,每隔 60 秒刷新,最多可以存储结果对象或列表的 512 个引用,而且返回的对象被认为是只读的,因此对它们进行修改可能会在不同线程中的调用者产生冲突。

8、结论

只要开启了二级缓存,我们在同一个Mapper中的查询,可以在二级缓存中拿到数据

查出的数据都会被默认先放在一级缓存中

只有会话提交或者关闭以后,一级缓存中的数据才会转到二级缓存中

原理图:

Mybatis缓存的原理是什么

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

推荐阅读:
  1. 什么是MyBatis缓存
  2. mybatis缓存是什么

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mybatis

上一篇:简单介绍php数据库三范式

下一篇:springboot中怎么实现默认静态路径

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》