一级缓存:

默认已开启

有效范围:

在一次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.


如人饮水、冷暖自知