MyBatis二级缓存
【摘要】 二级缓存二级缓存是全局缓存。作用域超出会话范围,可以由所有sqlsessions共享。第一级缓存缓存SQL语句,第二级缓存缓存结果对象。 二级缓存的配置1)MyBatis的全局缓存配置需要在 mybatis-config.xml的settings元素中设置,代码如下。<settings> <setting name="cacheEnabled" value="true" /></se...
二级缓存
二级缓存是全局缓存。作用域超出会话范围,可以由所有sqlsessions共享。
第一级缓存缓存SQL语句,第二级缓存缓存结果对象。
二级缓存的配置
1)MyBatis的全局缓存配置需要在 mybatis-config.xml的settings元素中设置,代码如下。
<settings> <setting name="cacheEnabled" value="true" /></settings>
2)在映射器文件(如webmapper.XML)中设置缓存。默认情况下不启用缓存。应该注意的是,辅助缓存的作用域是映射器的命名空间,也就是说,只有命名空间(com.tt.webItemApper)中的查询才能共享此缓存。代码如下。。
<mapper namescape="com.tt.WebsiteMapper"> <!-- cache配置 --> <cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true" /> ...</mapper>
以上属性说明如下。
属性 | 说明 |
---|---|
eviction | 代表的是缓存回收策略,目前 MyBatis 提供以下策略。- LRU:使用较少,移除最长时间不用的对象; |
- FIFO:先进先出,按对象进入缓存的顺序来移除它们;
- SOFT:软引用,移除基于垃圾回收器状态和软引用规则的对象;
- WEAK:弱引用,更积极地移除基于垃圾收集器状态和弱引用规则的对象。 |
| flushInterval | 刷新间隔时间,单位为毫秒,这里配置的是 100 秒刷新,如果省略该配置,那么只有当 SQL 被执行的时候才会刷新缓存。 |
| size | 引用数目,正整数,代表缓存最多可以存储多少个对象,不宜设置过大。设置过大会导致内存溢出。这里配置的是 1024 个对象。 |
| readOnly | 只读,默认值为 false,意味着缓存数据只能读取而不能修改,这样设置的好处是可以快速读取缓存,缺点是没有办法修改缓存。 |
3)在 mapper 文件配置支持 cache 后,如果需要对个别查询进行调整,可以单独设置 cache,代码如下。
<select id="getWebsiteList" resultType="com.tt.po.Website" usecache="true"> ...</select>
对于 MyBatis 缓存仅作了解即可,因为面对一定规模的数据量,内置的 Cache 方式就派不上用场了,并且对查询结果集做缓存并不是 MyBatis 所擅长的,它专心做的应该是 SQL 映射。对于缓存,采用 OSCache、Memcached 等专门的缓存服务器来做更为合理。
大家点赞、收藏、关注、评论啦 、打卡 文章 更新 268/ 365天
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)