查询缓存

mybatis提供查询缓存,用来减轻数据压力,提高数据库性能。
Mybatis的自我修养之七
mabatis缓存级别

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

一级缓存
Mybatis的自我修养之七
Mybatis的自我修养之七
实例:根据顾客id查询顾客信息

①接口方法
Mybatis的自我修养之七
②xml实现
Mybatis的自我修养之七
测试情形一:两次查询相同内容

③测试方法

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

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

③测试方法
Mybatis的自我修养之七
④测试结果
Mybatis的自我修养之七
分析:两次查询不同内容,在第一次查询时执行了SQL语句,在分割线下面第二次查询也执行SQL语句。第二次查询时从缓存中没有获取到查询结果,进行了再一次的查询。

测试情形三:创建两个SqlSession,两次查询相同内容
③测试方法
Mybatis的自我修养之七
④测试结果
Mybatis的自我修养之七
分析:两次查询相同内容,因为用到不同的sqlsession。在第一次查询时执行了SQL语句,在分割线下面第二次查询也执行SQL语句。

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

相关文章:

  • 2021-08-04
  • 2021-05-23
  • 2021-09-25
  • 2021-11-29
  • 2021-09-17
  • 2021-07-26
  • 2021-08-30
  • 2021-11-16
猜你喜欢
  • 2021-05-19
  • 2021-07-24
  • 2021-04-04
  • 2021-12-17
  • 2021-11-17
  • 2021-04-19
  • 2021-06-24
相关资源
相似解决方案