Mybatis Cache(一级缓存、二级缓存)
对于每次查询,先去缓存中找数据,如果在缓存中,直接从缓存中取数据;如果不在缓存中,从数据库取数据,并将数据存入缓存。可以大幅提高性能。
1. 一级缓存
一级缓存是SqlSession级别的缓存。一个sqlSession对象,维护一个缓存(HashMap),不同的sqlSession之间的缓存互相独立。
当一个sqlSession结束后,对应的一级缓存就失效了。
Mybatis默认开启一级缓存。
2. 二级缓存
二级缓存是Mapper级别的缓存,多个sqlSession共享一个二级缓存,二级缓存是跨SqlSession的。
多个sqlSession去操作同一个mapper的sql语句,数据存入二级缓存。
Mybatis默认没有开启二级缓存,需要在setting全局参数中配置开启。