Mybatis一级缓存
mybatis一级缓存是session级别的缓存,是不用我们进行配置的mybatis自动进行管理的。
mybatis一级缓存是不跨session的。
在一个session之内查询到的每个结果mybatis会给每个结果一个唯一标识。当第二次查找的时候,首先会在session中进行查找(根据唯一标识查找),如果能找到就直接拿,找不到就在数据库中发出sql进行查找(会使用一定的时间)
特别注意在一个session之内变更数据会清理掉缓存(仅仅对当前结果集有影响)。而不是像hibernate一样做同步(也跟着进行更新操作)。
代码实例
注意一级缓存必须得在一个session中才有效,它不跨session
@Test
public void testCache(){
SqlSession session = sqlSessionFactory.openSession();
try {
//需要执行sql从数据库中查询
Person person = session.selectOne("mapper.PersonMapper.selectOne",1);
//不需要执行sql从一级缓存中取
Person person1 = session.selectOne("mapper.PersonMapper.selectOne",1);
System.out.println(person);
System.out.println(person1);
} catch (Exception e) {
e.printStackTrace();
}
}