MyBatis缓存的使用
MyBatis的缓存分为一级缓存和二级缓存,一级缓存默认是开启的,而且不能关闭
至于一级缓存为什么不能关闭,MyBatis核心开发人员做出了解释:MyBatis的一些关键特性(例如通过<association>和建立级联映射、避免循环引用(circular references)、加速重复嵌套查询等)都是基于MyBatis一级缓存实现的,而且 MyBatis结果集 映射相关代码 重度依赖CacheKey,所以目前MyBatis不支持关闭一级缓存
MyBatis提供了一个配置参数localCacheScope
,用于控制一级缓存的级别,该参数的取值为SESSION、STATEMENT
当指定localCacheScope参数值为SESSION时,缓存对整个SqlSession有效,只有执行DML语句(更新语句)时,缓存才会被清除
当localCacheScope值为STATEMENT时,缓存仅对当前执行的语句有效,当语句执行完毕后,缓存就会被清空
MyBatis的一级缓存,用户只能控制缓存的级别,并不能关闭
MyBatis二级缓存的使用比较简单,只需要以下几步:
- 在MyBatis 主配置文件中 指定
cacheEnabled
属性值为true
2. 在MyBatis Mapper配置文件中,配置缓存策略、缓存刷新频率、缓存的容量等属性
3. 在配置Mapper时,通过 useCache属性 指定 Mapper执行时 是否使用缓存。另外,还可以通过flushCache
属性指定Mapper执行后是否刷新缓存
通过上面的配置,MyBatis的二级缓存就可以生效了
执行查询操作时,查询结果 会缓存到 二级缓存中,执行更新操作后,二级缓存会被清空