【MyBatis】一级缓存和二级缓存及其原理

一、一级缓存(SqlSession)(本地会话)

一级缓存默认开启的 在一次sqlSession中有效

1.查询同一个用户

 2.查询用户A 更新其他用户B 再次查询用户A

 

 每次进行DML语句(增删改)都会刷新缓存。

3.手动清除缓存

二、二级缓存(全局缓存)

在对象的mapper映射文件里面写 下面这个语句

 

 我们选用的是这个方法 用老师ID获得老师信息的方法

 测试方法代码如下

public void testcacheTest()
    {
        //sqlSession1 的会话进行第一次查询。查询后一级缓存存入二级缓存后失效 
        SqlSession sqlSession1=MybatisUtils.getSqlSession();
        TeacherMapper teacherMapper=sqlSession1.getMapper(TeacherMapper.class);
        Teacher t1=teacherMapper.getTeacherById(1);
        System.out.println(t1);
        sqlSession1.close();
        
        //新建sqlSession2进行查询 如果在二级缓存命中则不需要连接JDBC进行查询
        System.out.println("================================");
        SqlSession sqlSession2=MybatisUtils.getSqlSession();
        TeacherMapper teacherMapper2=sqlSession2.getMapper(TeacherMapper.class);
        Teacher t2=teacherMapper2.getTeacherById(1);
        System.out.println(t2);
        sqlSession1.close();
        
        //查看t1 t2是否一直
        System.out.println("=======================================");
        System.out.println(t1==t2);

    }

查看日志

 

原文地址:https://www.cnblogs.com/cckong/p/14342105.html