一级存储是SqlSession上的缓存,默认开启,是一种内存型缓存,不要求实体类对象实现Serializable接口。
缓存中的数据使用键值对形式存储数据
namespace+sqlid+args+offset>>> hash值作为键,查询出的结果作为值
![](https://i-blog.csdnimg.cn/blog_migrate/878b7b5951e6ed0c08076777ef4d1241.png)
测试 代码
@Test
public void testFindDeptByDetpno() {
EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
Emp emp = mapper.findByEmpno(7521);
System.out.println(emp);
// 中间发生了增删改或者是调用了SqlSession调用了commit,会自动清空缓存
sqlSession.commit();// 增删改的时候调用
EmpMapper mapper2 = sqlSession.getMapper(EmpMapper.class);
Emp emp2 = mapper2.findByEmpno(7521);
System.out.println(emp2);
System.out.println(emp==emp2);
System.out.println(mapper==mapper2);
}
![](https://i-blog.csdnimg.cn/blog_migrate/3e17be2a731f9f56a6a114d27e53462c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9fbb015bfd39d7ad4dd93acbba92985e.png)