前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mybatis缓存配置

mybatis缓存配置

作者头像
全栈程序员站长
发布2022-08-31 11:40:04
5700
发布2022-08-31 11:40:04
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。mybatis的缓存有三种方式: 1、一级缓存(基于SqlSession会话级别的; 2、二级缓存(基于nameSpace级别的,范围比以及缓存更广);

3、第三方缓存;

mybatis缓存使示意图:

mybatis缓存配置
mybatis缓存配置

一、一级缓存说明: 其中一级缓存是mybatis默认使用的缓存,无需手动配置,二级缓存需要手动配置; 一级缓存失效条件 1)sqlSession不同,由于一级缓存是基于sqlSession级别的,所以当使用不同sqlSession进行查询时缓存也不同; 2)sqlSession相同,手动清空一级缓存; 3)sqlSession相同,两次查询之间执行了增删改操作; 4)sqlSession相同,查询条件不同;

二、二级缓存相关配置: 步骤如下: 1)、开启缓存 在mybatis配置文件中设置启用缓存

代码语言:javascript
复制
 <settings>
    <setting name="cacheEnabled" value="true"/>
 </settings>

2)、使用缓存 在各个XXmapper.xml配置文件中加上

代码语言:javascript
复制
<cache eviction="FIFO"  flushInterval="10800000"  size="512" readOnly="true" /> 

属性说明:

mybatis缓存配置
mybatis缓存配置

3)、相关的实体类bean对象需要实现序列号接口Serializable

通过以上配置mybatis二级缓存配置完成!

三、mybatis缓存相关属性设置: 在XXmapper.xml配置文件的各个增删改查节点中可以设置以下属性控制缓存; useCache:默认为true,当设置false时,则不使用二级缓存(对一级缓存没有影响); flushCache:在增删改标签中默认为true,即:进行增删改之后会自动清除一级、二级缓存内容; localCacheScpoe:本地缓存作用域,默认为SESSION即开启一级缓存,当设置为STATEMENT时则关闭一级缓存;

说明: 在一级缓存和二级缓存同时存在的情况下,查询出来的数据都会自动放到一级缓存中,只有当一级缓存提交或者关闭之后,数据才会转移到二级缓存中,也就是说这个时候才能从二级缓存中取到数据, 数据查询的时候会先查询二级缓存,再查询一级缓存,最后查询数据库;

四、第三方缓存配置: Mybatis自身的缓存其实是很简陋的,其顶层接口为Cache,查看其具体实现,底层其实就是个Map数据结构而已,因此可以集成第三方缓存接口相关接口,进行数据缓存操作; 比如集成Ehcache,其实也就是实现了Cache接口,

mybatis缓存配置
mybatis缓存配置

具体配置如下:

1)、基础配置ehcache.xml(省略说明…)

2)、其它xml配置如下;

mybatis缓存配置
mybatis缓存配置

最后: 如果需要在命名空间中共享相同的缓存配置和实例,在这样的情况下你可以使用 cache-ref 元素来引用另外一个已经配置好的缓存。 即:在其他XXmapper.xml中配置缓存的引用, 如下:

代码语言:javascript
复制
<cache-ref namespace="com.x.x.x.XXXMapper"/>

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/143373.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档