一、xml 配置
➀ sqlConfig.xml 配置手动开启二级缓存
<settings>
<!-- 开启二级缓存 -->
<setting name="cacheEnabled" value="true" />
</settings>
➁ mapper.xml 配置标签:<cache/>
若要指定的sql不使用二级缓存,在其标签上设置 useCache="false"
➂ 返回实体要实现序列化接口
二、接口注解配置
@CacheNamespace
public interface ISecondMapper {
@Select("select * from userinfo where id = #{id}")
UserInfo findUserInfo(Integer id);
}
示例:
public class TestCacheUtil {
private SqlSessionFactory sqlSessionFactory;
@Before
public void before() throws IOException {
String path = "SqlConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(path);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
@Test
public void test3(){
SqlSession session1 = sqlSessionFactory.openSession();
SqlSession session2 = sqlSessionFactory.openSession();
UserMapper mapper1 = session1.getMapper(UserMapper.class);
UserMapper mapper2 = session2.getMapper(UserMapper.class);
UserInfo user1 = mapper1.findUserById(1);
// 关闭 session, 若使用 session1.clearCache();
// 关闭一级缓存的同时,也会关闭二级缓存
session1.close();
UserInfo user2 = mapper2.findUserById(1);
}
}
备注:一般不建议使用二级缓存
1、二级缓存无法满足分布式服务
2、针对多表查询,二级缓存往往会导致查询数据不准确