因为频繁的查询会很消耗资源,所以将经常查询且不经常修改的结果暂时放在内存中,需要的时候直接取一下。
测试一级缓存
创建两次相同的查询,返回两个数,可以在下面的截图中看到,只创建了一次数据库的连接,并且只查询了一次,所以一级缓存默认开启调用。
@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(); }
实体类需要序列化