首页 > 其他 > 详细

查询缓存

时间:2019-11-01 23:57:43      阅读:142      评论:0      收藏:0      [点我收藏+]

将上一次的查询结果保存在内存中,后面如果是相同的查询,就不再去数据库查询,到内存中获取数据。如果中间进行了增、删、改,需要清空缓存中的数据。

好处:

提高查询速度,减小数据库服务器压力

Mybatis中的查询缓存:

一级查询缓存

如果使用的是同一个SqlSession对象中【没有被关闭过close()】,执行了多次相同的查询语句,第一次查询后会将结果保存到内存中,后面相同的查询会从内存中直接获取数据,而不再去数据中查询,提高查询速度。

当一个SqlSession对象被关闭后,该SqlSession的上一次查询结果缓存中就不存在了。

Mybatis中一级缓存默认就是开启状态,不需要手动启动,而且不能够进行关闭。

一级缓存的验证:

用同一个SqlSession对象执行相同的方法,控制台只有一次查询

技术分享图片

 

 

控制台

技术分享图片

 

 

如果使用的不同的SqlSession对象,那么不使用缓存

技术分享图片

 

 

如果使用的是同一个SqlSession对象,但是中间出现了增删改操作,缓存也不起作用

技术分享图片

 

 

结果

技术分享图片

 

 

二级查询缓存

二级缓存与一级缓存,一级缓存当SqlSession关闭,则缓存数据不再存在,二级缓存的缓存数据与SqlSession对象无关。二级缓存延长缓存数据的保存时间。

使用

对查询语句中涉及到的实体类必须实现序列化接口

技术分享图片

 

 

在对应的映射文件中的mapper标签中添加cache子标签

技术分享图片

 

 

验证二级缓存的作用

使用的是不同的SqlSession对象

技术分享图片

 

 

执行结果

技术分享图片

 

 验证增删改对二级缓存的影响

技术分享图片

 

 

二级缓存在有增删改的时候会自动清空缓存,到数据库查找。

查询缓存

原文:https://www.cnblogs.com/Tunan-Ki/p/11780115.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!