什么是缓存?
把当前查询出来的数据进行记录,下一次查询相同数据时,从缓存中去取,就不会重新访问数据库了
MyBatis的缓存分为一级缓存和二级缓存
一级缓存默认是开启的
缓存只针对查询功能有效
CacheMapper

CacheMapper.xml

测试
dart
package com.baidu.mybatis;
import com.baidu.mybatis.mapper.CacheMapper;
import com.baidu.mybatis.pojo.Emp;
import com.baidu.mybatis.utils.SqlSessionUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
public class CacheMapperTest {
@Test
public void testCache() {
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
SqlSession sqlSession2 = SqlSessionUtils.getSqlSession();
CacheMapper mapper = sqlSession.getMapper(CacheMapper.class);
Emp emp = mapper.getEmpByEid(1);
Emp emp2 = mapper.getEmpByEid(1);
System.out.println("emp = " + emp);
System.out.println("emp2 = " + emp2);
System.out.println("--------------------");
CacheMapper mapper1 = sqlSession.getMapper(CacheMapper.class);
Emp emp3 = mapper1.getEmpByEid(1);
Emp emp4 = mapper1.getEmpByEid(1);
System.out.println("emp3 = " + emp3);
System.out.println("emp4 = " + emp4);
System.out.println("------------------------");
CacheMapper mapper2 = sqlSession2.getMapper(CacheMapper.class);
Emp emp5 = mapper2.getEmpByEid(1);
Emp emp6 = mapper2.getEmpByEid(1);
System.out.println("emp5 = " + emp5);
System.out.println("emp6 = " + emp6);
}
}

可以看到不同sqlsession,才会输出sql语句