二级缓存
默认是不开启的
二级缓存是同一个名称空间下mapper级别的缓存
首先开启二级缓存
<!-- 开启二级缓存,总开关 -->
<setting name="cacheEnabled" value="true"/>
<!-- 当前mapper是否启用二级缓存 -->
<cache></cache>
其次:类应该序列化
public class User implements Serializable
public void testSecondLevelCache() { SqlSession session1 = sqlSessionFactory.openSession(); SqlSession session2 = sqlSessionFactory.openSession(); SqlSession session3 = sqlSessionFactory.openSession(); UserMapper userMapper1 = session1.getMapper(UserMapper.class); UserMapper userMapper2 = session2.getMapper(UserMapper.class); UserMapper userMapper3 = session3.getMapper(UserMapper.class);
User user1 = userMapper1.findById(1); System.out.println(user1); session1.close();//清空一级缓存数据
userMapper3.deleteById(24); session3.commit();
User user2 = userMapper2.findById(1); System.out.println(user2); session2.close();
} |