程序员社区

MyBatis中一级缓存

文章目录

      • 1.查看缓存
      • 2.缓存失效的情况
        • 2.1 查询不同的信息
        • 2.2 增删改操作,可能会改变原来的数据,所以必定会存在刷新缓存
        • 2.3 手动清理缓存
        • 2.4 查询不同的Mapper.xml

1.查看缓存

1.开启日志
2.测试在一个Session中查询两次相同的记录
3.查看日志输出
在这里插入图片描述

2.缓存失效的情况

2.1 查询不同的信息

   @Test
    public void test(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user = mapper.queryUserById(1);
        System.out.println(user);

        System.out.println("===========================");
        User user2 =mapper.queryUserById(2);
        System.out.println(user2);
        sqlSession.close();
    }

在这里插入图片描述

2.2 增删改操作,可能会改变原来的数据,所以必定会存在刷新缓存

 @Test
    public void test(){
      SqlSession sqlSession = MyBatisUtils.getSqlSession();
      UserMapper mapper = sqlSession.getMapper(UserMapper.class);
      User user = mapper.queryUserById(1);
      System.out.println(user);

      mapper.updateUser(new User(2,"bbb","b13"));
      System.out.println("===========================");
      User user2 =mapper.queryUserById(1);
      System.out.println(user2);
      sqlSession.close();
  }

在这里插入图片描述

2.3 手动清理缓存

    @Test
    public void test(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user = mapper.queryUserById(1);
        System.out.println(user);
		//手动清理缓存
        sqlSession.clearCache();
        System.out.println("===========================");
        User user2 =mapper.queryUserById(1);
        System.out.println(user2);
        sqlSession.close();
    }

在这里插入图片描述

2.4 查询不同的Mapper.xml

一级缓存默认是开启的,只在一次sqlSession中有效,也就是拿到连接到关闭连接这个时间段。

赞(0) 打赏
未经允许不得转载:IDEA激活码 » MyBatis中一级缓存

相关推荐

  • 暂无文章

一个分享Java & Python知识的社区