一、一级缓存(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); }
查看日志