一级缓存:
默认已开启
有效范围:
在一次sqlsession会话中有效,当会话中同时存在查询,修改,删除等,多种操作时,一级缓存数据就会失效,
二级缓存:
默认已关闭
需要在mybatis配置文件中开启
<!--开启二级缓存 -->
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>
其次在 UserMapper.xml 文件中开启缓存
<!-- 开启二级缓存 -->
<cache/>
有效范围:
二级缓存是mapper级别的缓存,多个SqlSession去操作同一个Mapper的sql语句,多个SqlSession可以共用二级缓存,二级缓存是跨SqlSession的。
UserMapper有一个二级缓存区域(按namespace分),其它mapper也有自己的二级缓存区域(按namespace分)。每一个namespace的mapper都有一个二级缓存区域,两个mapper的namespace如果相同,这两个mapper执行sql查询到数据将存在相同的二级缓存区域中。
Q.E.D.