Mybatis 二级缓存的使用
Mybatis二级缓存
- 简介:二级缓存是namesace级别的,多个SqlSession去操作同个namespace下的Mapper的sql语句,多个SqlSession可以共用二级缓存,如果两个mapper的namespace相同,(既使是两个mapper,那么这两个mapper中执行sql查询的数据也将存在相同的二级缓存区域中,但是最后是每个Mapper单独的命名空间)
- 基于PerpetualCache的HashMap本地缓存,可自定义存储源,如Ehcacche/Redis等
- 默认是没有开启二级缓存
- 操作流程:第一次调用某个namespacce下的SQL去查询信息,查询到的信息会存放该mapper对应的二级缓存区域。第二次调用同个namespace下的mapper映射文件中,相同的sql去查询信息,会去对应的二级缓存内取结果
失效策略
执行同个namespace下的mapper映射文件中增删改sql,并执行了commit操作,会清空该二级缓存
注意:实现二级缓存的时候,Mybatis建议返回的POJO是可序列化的,也就是建议实现Serializable接口
缓存淘汰策略:会使用默认的LRU算法来收回(最近最少使用的)
开启缓存
如何开启某个二级缓存mapper.xml里面配置
<!--开启Mapper的namespace下的二级缓存-->
<!--
eviction:代表的是缓存回收策略,常见下面两种
1)、LRU,最近最少使用的,移除最长时间不用的对象
2)、FIFO,先进先出,按对象进入缓存的顺序来移除他们
flushInterval:刷新间隔时间,单位为毫秒,这里配置的是10秒,如果不配置他,当SQL被执行的时候才会去刷新缓存
size:引入数目,代表缓存最多可以存储多少个对象,设置过大会导致内存溢出
readOnly:只读,缓存数据只能读取不能修改,默认值为false
-->
<cache eviction="LRU" flushInterval="100000" readOnly="true" size="1024"></cache>
全局配置
<!--全局配置-->
<settings>
<!--这个配置使全局的映射器(二级缓存)启用或禁用缓存,全局总开关,这里关闭,mapper中开启了也没用-->
<setting name="cacheEnabled" value="true"/>
</settings>
一级缓存和二级缓存使用顺序
优先查询二级缓存==》查询一级缓存==》数据库
控制某个方法不走二级缓存
在标签中添加 useCache="false"
<select id="queryUserOrder" resultMap="UserOrderResultMap" useCache="false">
select
u.id,
u.name,
u.pwd,
u.phone,
u.head_img,
v.id idv,
v.out_trade_no,
v.create_time,
v.state,
v.total_fee,
v.video_id,
v.video_title,
v.video_img
from user u left join video_order v on u.id = v.user_id
</select>
Mybatis 二级缓存的使用的更多相关文章
- mybatis二级缓存应用及与ehcache整合
mybaits的二级缓存是mapper范围级别,除了在SqlMapConfig.xml设置二级缓存的总开关,还要在具体的mapper.xml中开启二级缓存. 1.开启mybatis的二级缓存 在核心配 ...
- 深入了解MyBatis二级缓存
深入了解MyBatis二级缓存 标签: mybatis二级缓存 2015-03-30 08:57 41446人阅读 评论(13) 收藏 举报 分类: Mybatis(51) 版权声明:版权归博主所 ...
- MyBatis二级缓存配置
正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持 Mybatis二级缓存是SessionFactory,如果两次查询基于同一个SessionFactory,那么就从二级缓存 ...
- mybatis二级缓存
二级缓存区域是根据mapper的namespace划分的,相同namespace的mapper查询数据放在同一个区域,如果使用mapper代理方法每个mapper的namespace都不同,此时可以理 ...
- 如何细粒度地控制你的MyBatis二级缓存(mybatis-enhanced-cache插件实现)
前几天网友chanfish 给我抛出了一个问题,笼统地讲就是如何能细粒度地控制MyBatis的二级缓存问题,酝酿了几天,觉得可以写个插件来实现这个这一功能.本文就是从问题入手,一步步分析现存的MyBa ...
- MyBatis 二级缓存全详解
目录 MyBatis 二级缓存介绍 二级缓存开启条件 探究二级缓存 二级缓存失效的条件 第一次SqlSession 未提交 更新对二级缓存影响 探究多表操作对二级缓存的影响 二级缓存源码解析 二级缓存 ...
- Springboot整合Ehcache 解决Mybatis二级缓存数据脏读 -详细
前面有写了一篇关于这个,但是这几天又改进了一点,就单独一篇在详细说明一下 配置 application.properties ,启用Ehcache # Ehcache缓存 spring.cache.t ...
- Spring Boot 入门(十):集成Redis哨兵模式,实现Mybatis二级缓存
本片文章续<Spring Boot 入门(九):集成Quartz定时任务>.本文主要基于redis实现了mybatis二级缓存.较redis缓存,mybaits自带缓存存在缺点(自行谷歌) ...
- Mybatis 二级缓存应用 (21)
[MyBatis 二级缓存] 概述:一级缓存作用域为同一个SqlSession对象,而二级缓存用来解决一级缓存不能夸会话共享,作用范围是namespace级,可以被多个SqlSession共享(只要是 ...
- 使用redis做mybaties的二级缓存(2)-Mybatis 二级缓存小心使用
Mybatis默认对二级缓存是关闭的,一级缓存默认开启: 下面就说说为什么使用二级缓存需要注意: 二级缓存是建立在同一个namespace下的,如果对表的操作查询可能有多个namespace,那么得到 ...
随机推荐
- ctf_web
ctfshow web13 访问题目链接 一看是一道文件上传题,上传文件进行测试 上传php会显示 error suffix 因此推测会检测格式 当文件字数超出一定字数时,显示 error file ...
- 2022年官网下安装Tomcat最全版与官网查阅方法
目录 一.环境整合 构建工具(参考工具部署方式) 二.官网下载 三.解压安装 四.配置环境 五.启动运行 六.配置为服务 七.查看设置服务 一.环境整合 构建工具(参考工具部署方式) 软件名称 版本 ...
- Python 数据降级(重采样)
在数据处理中,经常有高频数据转成低频,秒级数据转成分钟.小时数据等.我们将讨论以下方法: 使用 Pandas 的 resample 方法: 示例:将天数据转化成月数据. 代码示例: import pa ...
- Python 多线程、线程池、协程 爬虫
多线程生产者消费者模型爬虫 import queue import requests from bs4 import BeautifulSoup import threading import tim ...
- Android OpenMAX(八)如何学习OMXNodeInstance
前面一篇文章中我们看到media.codec service创建OMX组件后会把组件传递给一个OMXNodeInstance对象,并且把OMXNodeInstance对象返回到Framework层,F ...
- Docker Build Cache 缓存清理
Docker 18.09 引入了 BuildKit ,提升了构建过程的性能.安全.存储管理等能力. docker system df 命令,类似于 Linux上的 df 命令,用于查看 Docker ...
- kubenetes中的pod删除策略 级联删除与非级联删除
StatefulSet 有状态应用[有状态应用] 有状态:StatefulSet - 集群节点之间的关系. - 数据不完全一致. - 实例之间不对等的关系. - 依靠外部存储的应用. - 通过dns维 ...
- CentOS7的一些常规操作
1.启动或者重启sshd服务: systemctl stop sshd.service systemctl start sshd.service systemctl restart sshd.serv ...
- git push遇到的问题“Please make sure you have the correct access rights and the repository exists.”
问题:今天在用idea往github推送代码的时候,出现了下面的报错 原因:是ssh key有问题,连接不上服务器 解决: 1.得重新在git设置一下身份的名字和邮箱 git config --glo ...
- Python 将Word/ Exce/ PDF/ PPT文档转为OFD文档
OFD(Open Fixed-layout Document )是我国自主制定的一种开放版式文件格式标准.OFD文档具有不易被篡改.格式独立.版式固定等特点,目前常用于政府公文.金融.电子发票等领域. ...