首页 > 其他分享 >Mybatis14 - 一级缓存

Mybatis14 - 一级缓存

时间:2023-02-14 19:35:20浏览次数:45  
标签:缓存 一级 employee1 employee2 查询 SqlSession debug Mybatis14

一级缓存(默认开启)

  • MyBatis的一级缓存是SqlSession级别的,即通过同一个SqlSession查询的数据会被缓存
  • 再次使用同一个SqlSession查询同一条数据,会从缓存中获取

1、代码验证一级缓存

@Test
public void testFirstLevelCache() {
    
    EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
    
    // 1.第一次查询
    Employee employee1 = mapper.selectEmployeeById(2);
    
    log.debug("employee1 = " + employee1);
    
    // 2.第二次查询
    Employee employee2 = mapper.selectEmployeeById(2);
    
    log.debug("employee2 = " + employee2);
    
    // 3.经过验证发现,两次查询返回的其实是同一个对象
    log.debug("(employee2 == employee1) = " + (employee2 == employee1));
    log.debug("employee1.equals(employee2) = " + employee1.equals(employee2));
    log.debug("employee1.hashCode() = " + employee1.hashCode());
    log.debug("employee2.hashCode() = " + employee2.hashCode());
    
}

2、一级缓存失效的情况

  • 不是同一个SqlSession
  • 同一个SqlSession但是查询条件发生了变化
  • 同一个SqlSession两次查询期间执行了任何一次增删改操作
  • 同一个SqlSession两次查询期间手动清空了缓存
  • 同一个SqlSession两次查询期间提交了事务

标签:缓存,一级,employee1,employee2,查询,SqlSession,debug,Mybatis14
From: https://www.cnblogs.com/Ashen-/p/17120660.html

相关文章

  • Mybatis15 - 二级缓存
    二级缓存(手动开启)这里我们使用的是Mybatis自带的二级缓存,也可以称之为是内置的。二级缓存是SqlSessionFactory级别,通过同一个SqlSessionFactory创建的SqlSession查询的结......
  • Mybatis16 - 第三方缓存 EHCaChe
    1.EHCache简介官网地址:https://www.ehcache.org/Ehcacheisanopensource,standards-basedcachethatboostsperformance,offloadsyourdatabase,andsimplif......
  • Vue keep-alive缓存路由信息
    在不使用keep-alive时,通过路由跳转到另一组件上时,上一个组件会被vue销毁,在次进入,页面会保持初始状态,不会对用户的更改保留,如果需要包作在某组件上的更改,就可以使用keep-aliv......
  • 缓存
    缓存的优点提高网站的访问速度适用于不易改变的数据缓存的位置服务器端(Web服务器)缓存服务器(集群服务器)客户端In-Memory内存缓存(存在于Web服务器,仅能在一......
  • 数据库缓存数据一致性保证
    一、背景在本文正式开始之前,需要先取得以下两点的共识:a)缓存必须要有过期时间b)保证数据库跟缓存的最终一致性即可,不必追求强一致性。数据一致性指的是:a)缓存中存......
  • MyBatis的二级缓存整合redis
    MyBatis自带的二级缓存存在的问题在前面我们使用@CacheNamespace​实现了430.MyBatis的二级缓存,这个底层使用HashMap​来实现。在单机环境下没有问题,但是在分布......
  • MyBatis的二级缓存整合redis
    MyBatis自带的二级缓存存在的问题在前面我们使用@CacheNamespace​实现了430.MyBatis的二级缓存,这个底层使用HashMap​来实现。在单机环境下没有问题,但是在分布......
  • MyBatis的二级缓存整合redis
    MyBatis自带的二级缓存存在的问题在前面我们使用@CacheNamespace​实现了430.MyBatis的二级缓存,这个底层使用HashMap​来实现。在单机环境下没有问题,但是在分布......
  • MyBatis的二级缓存整合redis
    MyBatis自带的二级缓存存在的问题在前面我们使用@CacheNamespace​实现了430.MyBatis的二级缓存,这个底层使用HashMap​来实现。在单机环境下没有问题,但是在分布......
  • MyBatis的二级缓存整合redis
    MyBatis自带的二级缓存存在的问题在前面我们使用@CacheNamespace​实现了430.MyBatis的二级缓存,这个底层使用HashMap​来实现。在单机环境下没有问题,但是在分布......