[mybatis]mybatis中缓存的使用
缓存
因为频繁的查询会很消耗资源,所以将经常查询且不经常修改的结果暂时放在内存中,需要的时候直接取一下。
- 一级缓存:默认开启 SQLSession级别,SQLSession关闭则失效
- 二级缓存:手动开启,作用于一个命名空间
测试一级缓存
创建两次相同的查询,返回两个数,可以在下面的截图中看到,只创建了一次数据库的连接,并且只查询了一次,所以一级缓存默认开启调用。
@Test
public void test4(){
SqlSession sqlSession = MybatisUtil.getSqlSession();
prepleMapper mapper = sqlSession.getMapper(prepleMapper.class);
perple perple = mapper.getPerple(2);
System.out.println(perple);
perple perple1=mapper.getPerple(2);
System.out.println(perple1);
}
二级缓存测试
开启二级缓存:
<settings>
<setting name="cacheEnabled" value="true"></setting>
</settings>
或者在mapper的xml文件中使用
<cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/>
当一级缓存消失的时候,会自动把数据保存在开启的二级缓存之中。
@Test
public void test4(){
SqlSession sqlSession = MybatisUtil.getSqlSession();
SqlSession sqlSession1 = MybatisUtil.getSqlSession();
prepleMapper mapper = sqlSession.getMapper(prepleMapper.class);
perple perple = mapper.getPerple(2);
System.out.println(perple);
sqlSession.close();
prepleMapper mapper1 = sqlSession1.getMapper(prepleMapper.class);
perple perple1=mapper1.getPerple(2);
System.out.println(perple1);
sqlSession1.close();
}
实体类需要序列化