Mybatis的自我修养之七(查询缓存)

查询缓存

mybatis提供查询缓存,用来减轻数据压力,提高数据库性能。
在这里插入图片描述
mabatis缓存级别

  • 一级缓存
    每个sqlsession中缓存,当第二次查询时,从第一次查询结果的缓存中获取,针对单一客户。
  • 二级缓存
    跨整个sqlsession,针对所有客户。

一级缓存
在这里插入图片描述
在这里插入图片描述
实例:根据顾客id查询顾客信息

①接口方法
在这里插入图片描述
②xml实现
在这里插入图片描述
测试情形一:两次查询相同内容

③测试方法

测试方法优化(使用@Before 与 @After注解)
注:在test运行时会最先调用@Before注释的方法,最后调用@After注解的方法
在这里插入图片描述
在这里插入图片描述
④测试结果
在这里插入图片描述
分析:两次查询相同的内容,在第一次查询时执行了SQL语句,在分割线下面直接出结果,没有进行SQL查询。第二次查询时从缓存中获取查询结果。

测试情形二:两次查询不同内容

③测试方法
在这里插入图片描述
④测试结果
在这里插入图片描述
分析:两次查询不同内容,在第一次查询时执行了SQL语句,在分割线下面第二次查询也执行SQL语句。第二次查询时从缓存中没有获取到查询结果,进行了再一次的查询。

测试情形三:创建两个SqlSession,两次查询相同内容
③测试方法
在这里插入图片描述
④测试结果
在这里插入图片描述
分析:两次查询相同内容,因为用到不同的sqlsession。在第一次查询时执行了SQL语句,在分割线下面第二次查询也执行SQL语句。

结论:一级缓存无需任何配置,默认就是生效的。
在这里插入图片描述
二、二级缓存
在这里插入图片描述
二级缓存默认情况是关闭的,需要手动开启。
在这里插入图片描述
① 在mybatis全局配置文件中打开缓存总开关
在这里插入图片描述
② 在指定的mapper中使用来开启二级缓存
在这里插入图片描述
在这里插入图片描述
③让二级缓存的对象Entity(POJO)实现序列化接口
在这里插入图片描述
实例测试:执行一级缓存中的测试方法三(两个sqlsession查询相同的顾客信息)
在这里插入图片描述
测试结果:仅进行一次查询
在这里插入图片描述
④ 刷新缓存
在这里插入图片描述
在xml中进行配置
在这里插入图片描述
三、第三方二级缓存oscache
①导入jar包
在这里插入图片描述
②添加二级缓存配置文件(新建oscache配置文件oscache.properties)
在这里插入图片描述
③修改mapper文件中,添加type属性来指向对象二级缓存的支撑类
在这里插入图片描述
④在实例实现DiskPersistenceListener接口
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值