mybatis缓存

概念:存在与内存的临时数据
使用作用:减少和数据库的交互次数,提高执行效率
使用环境:经常查询不常修改的数据,数据正确性与最终结果不大的如商品库存,银行汇率,股市的牌价就不能使用

一级缓存

在查询数据的时候会在SqlSession存入缓存,缓存中的数据是map结构数据,SqlSession消失,缓存也消失
测试:
1.调用相同的查询方法,发现返回的两个对象相等,并且sql只执行了一次

在这里插入图片描述
在这里插入图片描述
2.当清除SqlSession缓存的时候,sql执行了两次,并且的到的对象地址也是不同的
在这里插入图片描述
在这里插入图片描述

触发清空一级缓存的情况

一级缓存会在调用修改,添加,删除,commit(),close()等方法时,就会清空一级缓存

二级缓存

是SqlSessionFactory对象的缓存该对象创建的SqlSession都共享其缓存

测试
1.使用相同的factory创建SqlSession,并在使用后close(),这样可以清楚一级缓存

在这里插入图片描述
在这里插入图片描述

2.查看以上结果发现并没有缓存的效果,相同的调用下sql语句还是执行了两遍,这是因为手动开启二级缓存
开启二级缓存有三步:
		1).在全局配置文件SqlMapConfig下设置Setting的cacheEnabled属性为true(本身默认值为true)

在这里插入图片描述
在这里插入图片描述

		2).在实体类映射文件中添加<cache/>标签

在这里插入图片描述

		3).在select中添加useCache="true"

在这里插入图片描述

3.此时日志显示二级缓存开启,但是两个对象的的判断却还是false,这是因为二级缓存存储的不是对象,而是存储的数据。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值