| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 详解SpringBoot整合Mybatis开启本地二级缓存和使用redis开启二级缓存 -> 正文阅读 |
|
[Java知识库]详解SpringBoot整合Mybatis开启本地二级缓存和使用redis开启二级缓存 |
作者:%C2%A04%E3%80%81mapper%E6%96%87%E4%BB%B6%E9%85%8D%E7%BD%AE |
目录 2、在需要开启的mapper.xml中,添加以下代码(在下方) 1、在上面基础架构搭建好之后,加上redis maven配置 3、因为这个类不是Spring管理的,所以通过MyBatisRedisSpringContext从ioc容器里获取redisTemplate类 ?5、启动应用发送请求??????? 一、Mybatis缓存mybatis中有一级缓存和二级缓存,我们常用的是一级缓存,mybatis会默认打开。
一级缓存是SqlSession级别。一级缓存的作用域是 SqlSession , Mabits 默认开启一级缓存。 在同一个SqlSession中,执行相同的SQL查询时;第一次会去查询数据库,并写在缓存中,第二次会直接从缓存中取。 当执行SQL时候两次查询中间发生了增删改的操作,则SqlSession的缓存会被清空。 一级缓存 Mybatis的内部使用一个HashMap,key为hashcode+statementId+sql语句。Value为查询出来的结果集映射成的java对象。 Sqlsession执行insert、update、delete等操作commit后会清空该SqlSession缓存。
二级缓存是Mapper级别的缓存,多个SqlSession去操作同一个Mapper中的sql语句,则这些SqlSession可以共享二级缓存,即二级缓存是跨SqlSession的。简单说就是同一个namespace?下的?mapper?映射文件中,用相同的sql去查询数据,会去对应的二级缓存内取结果。 二、mybatis开启本地二级缓存
1、在配置文件中添加以下代码
2、在需要开启的mapper.xml中,添加以下代码(在<mapper namespace>下方)<!--开启二级缓存--> <cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/> 3、 mapper查询参数配置
设置useCache=false可以禁用当前select语句的二级缓存,即每次查询都会发出sql去查询,默认情况是true,即该sql使用二级缓存。所以:针对每次查询都需要最新的数据sql,要设置成useCache=false,禁用二级缓存。 清空缓存,一般下执行完commit操作都需要刷新缓存,flushCache=true表示刷新缓存,这样可以避免数据库脏读。但是如果你不想刷新缓存只需要这么做:
4、启动应用发送查询请求打开谷歌浏览器发送查询请求时可以看到控制台有sql打印出来。再用IE浏览器发送查询请求发现第二次未打出sql,说明第二次sql查询已经走了mybatis二级缓存。 第一次谷歌浏览器: ?第二次IE浏览器: Cache Hit Ratio [com.sl.mapper.TDmCustMapper]: 0.5714285714285714 总结: 1、当为select查询语句时: flushCache默认为false,表示任何时候语句被调用,都不会去清空本地缓存和二级缓存。 useCache默认为true,表示会将本条语句的结果进行二级缓存。 2、当为insert、update、delete语句时: flushCache默认为true,表示任何时候语句被调用,都会导致本地缓存和二级缓存被清空。 useCache属性在该情况下没有。 三、使用redis开启二级缓存
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 | -2025/3/10 17:10:47- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |