Mybatis一级缓存失效的四种场景

Mybatis一级缓存失效的四种场景

  • Mybatis一级缓存的简单陈述
    • 一级缓存的使用体验
    • 一级缓存失效的四种场景(请各位看官结合上方)
      • 场景一:SqlSeesion实例不同
      • 场景二:SqlSeesion实例相同,但查询条件不同
      • 场景三:SqlSeesion对象相同,查询条件也相同,但两次查询之间执行了增删改操作
      • 场景四:SqlSeesion对象相同,两次查询条件相同,中间无其它增删改操作,但使用了clearCache()方法
  • 博主的话

Mybatis一级缓存的简单陈述

Mybatis数据库 进行 交汇(select语句) 时,首先会先去二级缓存查找是否有对应的数据,如果查找无果则会去一级缓存中查找是否有对应的数据
Mybatis与数据库 同一次会话 期间查询到的数据都会存储在本地缓存中,以后如果需要 获取相同的数据,则直接从缓存中拿,不再去数据库进行查询。

一级缓存,也可以称为 本地缓存
每个SqlSession实例都拥有 一个 自己的本地缓存。如果创建一个的SqlSession实例,则该实例拥有一个新的一级缓存

一级缓存的使用体验

Mybatis一级缓存失效的四种场景_第1张图片
控制台打印结果如下
Mybatis一级缓存失效的四种场景_第2张图片
结果Mybatis 只发送了一条 select sql

一级缓存失效的四种场景(请各位看官结合上方)

场景一:SqlSeesion实例不同

Mybatis一级缓存失效的四种场景_第3张图片
控制台打印结果如下
Mybatis一级缓存失效的四种场景_第4张图片
结果虽然select sql相同,但 Mybatis 发送了两条 select sql

场景二:SqlSeesion实例相同,但查询条件不同

Mybatis一级缓存失效的四种场景_第5张图片
控制台打印结果如下
Mybatis一级缓存失效的四种场景_第6张图片
结果虽然SqlSession实例相同,但 Mybatis 发送了两条 select sql

场景三:SqlSeesion对象相同,查询条件也相同,但两次查询之间执行了增删改操作

Mybatis一级缓存失效的四种场景_第7张图片
控制台打印结果如下
Mybatis一级缓存失效的四种场景_第8张图片
结果虽然SqlSession实例相同select sql也相同,但 Mybatis 发送了两条 select sql

场景四:SqlSeesion对象相同,两次查询条件相同,中间无其它增删改操作,但使用了clearCache()方法

Mybatis一级缓存失效的四种场景_第9张图片
控制台打印结果如下
Mybatis一级缓存失效的四种场景_第10张图片
结果虽然SqlSession实例相同select sql也相同同时两条select sql中间 无其它增删改操作,但 Mybatis 发送了两条 select sql

博主的话

鄙人不才,如有思虑不周之处,还望各位指正。祝诸君与我,皆可上高楼,望尽天涯路!!!

转载,请标明出处

你可能感兴趣的:(笔记,java)