现实分布式项目中会不会开启mybatis的二级缓存?

在分布式项目中,是否开启MyBatis的二级缓存需结合具体场景和技术方案综合评估。
以下是关键考量因素:

一、默认二级缓存的局限性

  1. 隔离性问题:MyBatis默认的二级缓存基于HashMap实现,属于本地缓存,不同节点间的缓存数据无法共享,可能导致集群环境下的数据不一致或脏读问题。
  2. 缓存刷新机制:默认缓存采用“全量清空”策略,任何更新操作会清空对应namespace下的所有缓存,可能引发缓存雪崩
  3. 序列化要求:实体类必须实现Serializable接口,增加了开发约束。

二、分布式场景下的替代方案

  1. Redis集成

    • 通过自定义缓存实现(如MybatisRedisCache),将二级缓存替换为Redis等分布式缓存,解决数据共享问题。
    • 需额外处理缓存过期策略、序列化兼容性等问题。
  2. Spring Cache抽象

    • 使用@Cacheable等注解结合Redis,实现更灵活的分布式缓存管理,避免直接依赖MyBatis缓存机制。

三、实际应用建议

  • 高并发读场景:若查询频繁且数据更新较少,可开启分布式二级缓存(如Redis),但需配合合理的TTL和一致性策略。
  • 强一致性要求:若业务对数据实时性要求高(如金融交易),建议关闭二级缓存,直接依赖数据库
  • 混合架构:可结合本地缓存(如Caffeine)作为一级缓存,Redis作为二级缓存,平衡性能与一致性。

四、典型配置示例

<!-- MyBatis配置开启二级缓存 -->
<settings><setting name="cacheEnabled" value="true"/>
</settings><!-- Mapper中指定Redis缓存实现 -->
<cache type="com.example.MybatisRedisCache"/>

综上,分布式项目中通常不会直接使用MyBatis默认二级缓存,而是通过自定义分布式缓存(如redis)或框架级方案(如Spring Cache)实现类似功能。


引用链接:
1.为什么mybatis默认不开启二级缓存? - 学亮编程手记
2.【SpringBoot+MyBatis】二级缓存以及使用Redis缓存数据 - CSDN博客
3.Mybatis自定义分布式二级缓存实现与遇到的一些问题解决方案! - 博客园
4.HoRain云–MyBatis一级缓存、二级缓存详解:正确理解缓存机制与实战应用 - HoRain 云助手
5.Redis实现Mybatis的二级缓存 - CSDN
6.分布式数据之缓存技术,看这一篇就够了 - CSDN下载
7.使用Spring Cache优雅的实现分布式二级缓存! - CSDN博客
8.Spring Boot 的 3 种二级缓存落地方案 - CSDN博客
9.MyBatis Plus整合Redis实现分布式二级缓存的问题 - 脚本之家
10.《从Java面试题来看源码》,项目中使用 Mybatis 缓存吗?为什么项目中不用 Mybatis 的二级缓存? - 腾讯云
11.MyBatis之缓存避坑: MyBatis的一级缓存、二级缓存的实现分析与分布式环境下数据一致性问题 - 腾讯云
12.MyBatis Plus整合Redis实现分布式二级缓存 - CSDN博客
13.MyBatis的二级缓存整合redis - 唐有炜
14.MyBatis二级缓存深度解析:从入门到实战,看这篇就够了! - xuanyi.blog.csdn.net
15.【MyBatis学习13】MyBatis中的二级缓存[通俗易懂] - 腾讯云
16.mybatis的一级缓存和二级缓存 - CSDN博客
17.mybatis+redis实现分布式缓存+缓存面试题 - CSDN博客
18.后端:MyBatis缓存知识介绍 - 腾讯云
19.🚀 MyBatis缓存机制揭秘 🔍 - 此刻的雨一落便是长久
20.关于MyBatis缓存你不知道的事 - 千锋教育
21.Mybatis缓存机制(二级缓存) - 杨京京
22.Spring Boot 集成 Redis 配置 MyBatis 二级缓存 - 阿甘
23.吃透MyBatis面试八股文 - 程序员大彬
24.MyBatis框架详解:从基础到实战的全栈指南 - Arvin


Mybatis有多少级缓存?

MyBatis 提供两级缓存机制,用于优化数据库查询性能。

具体如下:

1. 一级缓存

  • 作用域SqlSession 级别,默认开启且无法关闭。
  • 生命周期:与 SqlSession 绑定,当执行 flush()close()、事务提交或回滚时,缓存自动清空。
  • 特点
    • 同一 SqlSession 内,重复执行相同 SQL(参数、方法、Mapper 接口一致)会直接命中缓存,避免重复查询数据库。
    • 执行增删改(DML)操作或手动调用 clearCache() 会立即清空当前会话的所有缓存。

2. 二级缓存

  • 作用域Mapper 级别(namespace 作用域),默认关闭,需手动开启。
  • 开启条件
    • 全局配置中启用缓存(<setting name="cacheEnabled" value="true"/>)。
    • 实体类实现 Serializable 序列化接口。
    • 映射文件中添加 <cache/> 标签。
  • 查询顺序
    优先检查二级缓存 → 再查一级缓存 → 最后访问数据库。
  • 失效机制
    namespace 下的 DML 操作会清空该 Mapper 的所有缓存;可通过 useCache="false" 禁用特定查询的缓存。

⚠️ 注意事项

  • 性能与一致性
    一级缓存响应快但作用域有限,二级缓存可跨会话但需处理数据一致性问题;分布式场景建议结合 Redis 等第三方缓存。
  • 适用场景
    高频查询且数据变动少时适合二级缓存;短事务或单次操作频繁查询适合一级缓存。

两级缓存协同工作,构成 MyBatis 完整的缓存体系,可显著减少数据库压力,但需根据业务需求权衡实时性与性能。


引用链接:
1.Mybatis一级二级缓存详解 - 度小视
2.Mybatis一级缓存与二级缓存详解 - 度小视
3.Mybatis缓存机制详解:一级与二级缓存的区别 - 无名指的心愿
4.【Java面试】阿里二面,讲一下Mybatis里的缓存机制?请看Mic老师是如何替你解答的! - 哔哩哔哩
5.MyBatis 一级缓存与二级缓存_mybatis一级缓存和二级缓存-CSDN博客 - CSDN博客
6.深入解析,MyBatis的一二级缓存 - CSDN博客
7.【Java面试】阿里一面:MyBatis缓存机制的理解以及优缺点是什么? - 哔哩哔哩
8.【2025Java最新大厂面试题】7天刷完7月面试、跳槽拿offer就稳啦!!包括Java基础/并发编程/JVM/Mysql/Spring/Redis等等! - 哔哩哔哩
9.逼自己6月刷完这100集《2025Java面试题》,啃透这4个重点,offer拿到手软!|视频含代码讲解! - 哔哩哔哩
10.数据库常见面试题:聊聊Mybatis中的一级缓存,二级缓存 - 哔哩哔哩
11.Mybatis源码解析(十):一级缓存和二级缓存 - 腾讯云
12.MyBatis之缓存避坑: MyBatis的一级缓存、二级缓存的实现分析与分布式环境下数据一致性问题 - 腾讯云
13.HoRain云–MyBatis一级缓存、二级缓存详解:正确理解缓存机制与实战应用 - HoRain 云助手
14.MyBatis中一级缓存和二级缓存的区别 - 脚本之家
15.详解Mybatis一级缓存和二级缓存 - 博客园
16.Mybatis中的一级缓存与二级缓存详解 - 百度开发者中心
17.MyBatis中的一级、二级缓存机制详解 - 百度开发者中心
18.MyBatis的缓存机制 - CSDN博客
19.Mysql–实战篇–mybatis cache(一级缓存,二级缓存,子查询主键主查询全部,查询条件加索引,覆盖索引等) - CSDN博客
20.mybatis缓存详解 - 腾讯云
21.MyBatis:缓存机制详解 - 腾讯云


MyBatis二级缓存有哪些失效情况?

MyBatis二级缓存的失效主要涉及配置、操作、事务及环境四类场景,具体如下:


🔧 一、配置或条件缺失导致失效

  1. 未开启全局缓存
    全局配置中若未设置 <setting name="cacheEnabled" value="true"/>,二级缓存完全禁用。
  2. Mapper未配置<cache/>标签
    单个Mapper需显式添加 <cache/> 标签,否则该命名空间(namespace)下的查询不启用二级缓存。
  3. 实体类未序列化
    查询结果对应的实体类未实现 Serializable 接口时,缓存数据无法正确存储。
  4. 查询方法禁用缓存
    <select> 标签中设置 useCache="false",该查询结果不进入二级缓存。

🔄 二、数据变更操作导致失效

  1. 同namespace的DML操作
    执行同Mapper下的 INSERT/UPDATE/DELETE 语句后,该命名空间下所有二级缓存数据立即清空。
  2. 配置强制刷新flushCache=true
    若查询语句配置 flushCache="true",执行时会同时清空一、二级缓存(通常不建议用于查询)。
  3. 手动清空缓存
    调用 SqlSession.clearCache() 或通过代码触发缓存管理器(如 Cache 对象)的清空操作。

️ 三、事务或会话行为导致失效

  1. 会话未提交或关闭
    二级缓存仅在 SqlSession 执行 commit()close() 后生效,未提交的查询数据不会刷入缓存。
  2. 跨SqlSession的并发问题
    一个会话提交数据更新后,其他会话可能因缓存未同步而读到旧数据(需结合事务隔离级别处理)。

🌐 四、分布式环境失效场景

  1. 多节点缓存不一致
    集群部署时,单节点更新数据后,其他节点的二级缓存不会自动失效,导致脏读。
  2. 第三方缓存未集成
    若使用Redis等中央缓存替代默认二级缓存,但未正确配置同步机制,可能引发数据不一致。

📊 高频失效场景总结

场景类型具体操作失效范围
同namespace写操作INSERT/UPDATE/DELETE整个Mapper缓存清空
会话生命周期异常SqlSession未commit/close新数据无法存入缓存
序列化缺失实体类未实现Serializable缓存存储失败
分布式环境更新单节点数据更新其他节点缓存未同步失效

💡 应对建议

  • 强制刷新配置:对实时性要求高的查询,显式设置 flushCache="true"(慎用);
  • 禁用二级缓存:分布式场景建议关闭二级缓存(配置 cacheEnabled="false"<cache blocking="true"/>),改用Redis等集中式缓存;
  • 测试验证:通过日志监控缓存命中率(如 LoggingCache 包装类)。

引用链接:
1.HoRain云–MyBatis一级缓存、二级缓存详解:正确理解缓存机制与实战应用 - HoRain 云助手
2.MyBatis缓存机制(一级/二级缓存失效场景) - 51CTO博客
3.Mybatis缓存机制 - CSDN博客
4.35. MyBatis中的缓存失效机制是如何工作的? - CSDN博客
5.MyBatis 中的缓存失效是什么时候发生的 - www.xth8013.com
6.Mybatis源码解析(十):一级缓存和二级缓存 - 腾讯云
7.详解Mybatis一级缓存和二级缓存 - 博客园
8.【MyBatis】MyBatis的缓存 - CSDN博客
9.Mybatis二级缓存失效及二级缓存使用简介 - CSDN博客
10.Mybatis 缓存原理及失效情况解析 - 脚本之家
11.MyBatis中二级缓存和其失效的一种情况 - 博客园
12.解锁MyBatis 缓存:深入剖析原理与典型实现示例展示 - 跟我从零开始学编程
13.Mybatis插件失效背后真正你不知道的原因??? - 哔哩哔哩
14.mybatis的二级缓存使用以及禁用 - CSDN博客
15.【为什么要禁用mybatis二级缓存?】 - CSDN博客
16.mysql 禁用mybatis缓存 - 51CTO博客
17.spring boot 关闭mybatis框架一二级本地缓存 - 51CTO博客
18.【MyBatis学习13】MyBatis中的二级缓存[通俗易懂] - 腾讯云
19.21Mybatis中缓存机制_二级缓存失效情况 - 哔哩哔哩
20.【Java面试】阿里一面:MyBatis缓存机制的理解以及优缺点是什么? - 哔哩哔哩
21.springboot mybatisplus 删除时二级缓存未刷新 mybatis二级缓存脏数据 - 51CTO博客
22.Mybatis中一级缓存和二级缓存使用详解 - 阿里云开发者社区
23.MyBatis 一级缓存与二级缓存_mybatis一级缓存和二级缓存-CSDN博客 - CSDN博客
24.MyBatis知识汇总(第十篇)【详解】MyBatis的缓存机制,一级缓存+失效的3种情况,二级缓存,详解,实例,注意事项 - 51CTO博客
25.十三、MyBatis缓存 - antiai
26.springboot mybatis缓存失效 - 51CTO博客
27.MyBatis缓存揭秘:两级并存 - 七安Melody会彤彤
28.MyBatis 的缓存机制 - RainbowSea
29.图解| 聊聊 MyBatis 缓存 - 悟空聊架构
30.关于MyBatis缓存你不知道的事 - 千锋Java学习站
31.Mybatis最全笔记知识点 - 小狐狸学java
32.spring mybatis 缓存失效原因 mybatis缓存key - 51CTO博客
33.mybatis缓存机制详解 - 鸿鹄之愿燕雀难解
34.mybatis 二级缓存失效_Mybatis09缓存 - CSDN博客
35.二级缓存失效_MyBatis 中的一级和二级缓存 - CSDN博客
36.由Mybatis 源码畅谈软件设计(八):从根上理解 Mybatis 二级缓存 - 京东云
37.MyBatis一级缓存和二级缓存详解 - 胖乎乎的鲸鱼喜欢蓝莓


MyBatis二级缓存有什么用?

MyBatis二级缓存的核心作用是SqlSession共享高频查询数据,显著减少数据库访问压力并提升查询性能。其主要价值体现在以下场景:


🔥 核心作用

  1. 减少数据库访问
    当多个SqlSession重复查询相同数据(如商品信息、配置表)时,二级缓存将结果存储在内存中,后续查询直接命中缓存,避免重复访问数据库、。

    💎 典型场景:高并发下频繁读取静态数据(如省份列表、系统参数)、。

  2. 加速复杂查询响应
    对多表关联、聚合计算等耗时查询,首次执行后结果存入二级缓存,后续相同查询直接从内存返回结果,跳过SQL解析与磁盘I/O,响应速度提升数倍、。

  3. 跨会话数据共享
    不同用户(不同SqlSession)访问相同数据时,二级缓存允许直接复用已缓存结果,消除重复查询、。

    例:用户A查询订单详情后,用户B查询同一订单可直接读缓存。


⚠️ 适用边界(需结合业务设计)

适用场景不适用场景
读多写少(如配置表、历史数据)写多读少(如库存、交易流水)
数据一致性要求较低强一致性场景(如支付状态)
单机或集中式部署分布式集群未同步缓存、

️ 性能优化对比

缓存层级作用范围性能增益点瓶颈
一级缓存单会话内避免会话内重复查询会话结束即失效
二级缓存全局跨会话减少跨会话重复查询分布式环境需额外集成

📌 关键建议

  • 对更新频繁的数据,可通过<cache flushInterval="600000">设置缓存自动刷新间隔;
  • 分布式场景建议 关闭 默认二级缓存,改用 Redis 等集中式缓存。

引用链接:
1.【MyBatis学习13】MyBatis中的二级缓存[通俗易懂] - 腾讯云
2.mybatis底层为什么设计二层缓存? - CSDN博客
3.Mybatis源码解析(十):一级缓存和二级缓存 - 腾讯云
4.MyBatis的一级缓存和二级缓存以及优点说明 - 脚本之家
5.MyBatis缓存揭秘:性能翻倍 - 皮丘卡不抢点
6.Mybatis中的一级二级缓存扫盲 - CSDN博客
7.MyBatis 一级缓存与二级缓存_mybatis一级缓存和二级缓存-CSDN博客 - CSDN博客
8.mybatis二级缓存 - 小白
9.2024 springboot mybatis plus redis 二级缓存 mybatis二级缓存弊端 - 51CTO博客
10.Mybatis中的一级、二级缓存是怎么实现的 - 格物信息
11.MyBatis一级缓存和二级缓存详解 - 胖乎乎的鲸鱼喜欢蓝莓
12.mybatis 详解 一级缓存、二级缓存 - 腾讯云
13.MyBatis缓存机制(一级缓存,二级缓存) - 腾讯云
14.MyBatis 有哪些缓存? 一级缓存和二级缓存有什么区别? - CSDN博客
15.介绍一下MyBatis缓存? - CSDN博客
16.MyBatis中一级缓存和二级缓存的区别 - 脚本之家
17.Mybatis缓存的使用(Mybatis一级、二级缓存)_mybatis一级缓存和二级缓存应用场景-CSDN博客 - CSDN博客
18.Spring Boot 整合 MyBatis 中使用一级缓存与二级缓存详解(含完整示例) - CSDN博客
19.由Mybatis 源码畅谈软件设计(八):从根上理解 Mybatis 二级缓存 - 京东云
20.mybatis一级缓存和二级缓存的应用场景及生效条件;为什么mybatis默认不开启二级缓存? - 51CTO博客
21.Mybatis二级缓存详解与实战教程 - 慕课网
22.25 MyBatis 映射文件 cache之二级缓存 - 哔哩哔哩
23.【Java面试】 在微服务架构下,MyBatis 二级缓存的使用会面临哪些挑战? - 哔哩哔哩
24.Mybatis一级二级缓存详解 - 度小视
25.如何了解MyBatis 的二级缓存? - 知足快乐田园
26.mybatis一级缓存和二级缓存的应用场景及生效条件 - 学亮编程手记
27.【Java面试】阿里一面:MyBatis缓存机制的理解以及优缺点是什么? - 哔哩哔哩
28.京东面试题:MyBatis的二级缓存 - 哔哩哔哩
29.MyBatis框架:二级缓存概述及案例 - HelloWorld小码农
30.Mybatis一级缓存与二级缓存详解 - 度小视
31.10分钟带你掌握MyBatis二级缓存,轻松应对复杂查询。 - 笑傲存钱罐
32.HoRain云–MyBatis一级缓存、二级缓存详解:正确理解缓存机制与实战应用 - HoRain 云助手
33.十三、MyBatis缓存 - antiai
34.Mybatis-1 - 仙人掌
35._Mybatis一级缓存和二级缓存(带测试方法) - 腾讯云
36.MyBatis一级缓存和二级缓存详解 - CSDN博客
37.Java社招面试题:MyBatis 的一级、二级缓存?面试官问完我直接讲了半小时! - 51CTO博客
38.数据库常见面试题:聊聊Mybatis中的一级缓存,二级缓存 - 哔哩哔哩
39.🚀 MyBatis缓存机制揭秘 🔍 - 此刻的雨一落便是长久


分布式环境下mybatis缓存有什么问题?


在分布式环境下,MyBatis的默认缓存机制(尤其二级缓存)会面临以下核心问题及挑战:


🚨 一、数据一致性问题(最严重)

  1. 节点间缓存不同步

    • 默认二级缓存是本地存储(如PerpetualCache基于HashMap),不同服务节点的缓存相互独立。当一个节点更新数据并清空自身缓存时,其他节点仍持有旧数据,导致脏读。
    • 典型场景
      • 节点A更新用户信息 → 清空自身缓存;
      • 节点B读取同一用户 → 返回未更新的缓存旧值。
  2. 跨节点更新失效延迟

    • MyBatis仅在同命名空间的DML操作后清空当前节点缓存,但无法通知其他节点同步失效。

二、缓存穿透与雪崩风险加剧

  1. 穿透问题(查询不存在的数据)

    • 恶意请求高频访问不存在的数据(如无效ID),穿透缓存直达数据库。分布式环境下,多个节点同时遭受此类攻击会迅速压垮数据库。
  2. 雪崩问题(缓存集中失效)

    • 多个节点缓存设置相同过期时间,到期后所有请求同时冲击数据库,引发连锁故障。

⚠️ 三、性能与资源瓶颈

  1. 内存占用过高

    • 每个节点独立缓存全量数据,造成内存冗余。例如,10个节点缓存同一10GB数据集 → 总占用100GB,资源利用率低下。
  2. 分布式锁竞争

    • 若通过分布式锁(如RedisLock)强制缓存一致性,高并发下锁竞争会显著增加延迟。

🛠️ 四、解决方案与优化实践

1. 启用分布式缓存替代默认二级缓存
方案实现方式优势
集成Redis配置<cache type="org.mybatis.caches.redis.RedisCache">,所有节点共享中央缓存。数据全局一致,避免节点间不一致
Ehcache集群通过Terracotta或RMI实现节点间缓存同步。减少数据库压力,自动同步失效
2. 防御缓存异常
  • 防穿透
    • 对非法请求参数布隆过滤器(Bloom Filter)拦截,直接拒绝。
    • 缓存空值(如NULL)并设置短过期时间(例:30秒)。
  • 防雪崩
    • 分散缓存过期时间(基础时间 + 随机偏移量)。
    • 热点数据永不过期,通过异步线程刷新。
3. 降级兜底策略
  • 熔断限流
    当缓存服务宕机时,触发熔断机制(如Hystrix),请求直接降级到本地一级缓存或静态数据。
  • 异步核对
    定时任务比对缓存与数据库数据,修复不一致(如订单库存核对)。

💎 总结建议

📌 分布式环境下的缓存选择优先级
Redis集群 > Ehcache集群 > 关闭MyBatis二级缓存

  • 强一致性场景:必须依赖Redis等分布式缓存;
  • 高频更新数据:直接禁用缓存,改用数据库读写分离。

引用链接:
1.HoRain云–MyBatis一级缓存、二级缓存详解:正确理解缓存机制与实战应用 - HoRain 云助手
2.MyBatis之缓存避坑: MyBatis的一级缓存、二级缓存的实现分析与分布式环境下数据一致性问题 - 腾讯云
3.MyBatis缓存机制(一级/二级缓存失效场景) - 51CTO博客
4.Mybatis缓存机制 - CSDN博客
5.mybatis 缓存未生效 - CSDN博客
6.MyBatis Plus整合Redis实现分布式二级缓存的问题 - 脚本之家
7.MyBatis中二级缓存和其失效的一种情况 - 博客园
8.mybatis二级缓存的缺点有哪些 - 亿速云计算
9.MyBatis的二级缓存整合redis - 唐有炜
10.35. MyBatis中的缓存失效机制是如何工作的? - CSDN博客
11.Mybatis 缓存 - CSDN博客
12.Mybatis自定义分布式二级缓存实现与遇到的一些问题解决方案! - 博客园
13.详解mybatis的一二级缓存以及缓存失效原因 - CSDN博客
14.【字节Java二面】说说你对Mybatis中缓存机制的理解以及优缺点?面试必问,建议收藏! - 哔哩哔哩
15.mybatis详解,mybatis一级二级缓存机制,以及Ehcache & Redis对比 - CSDN博客
16.2025年大厂实战场景面试题精析(附真题拆解) - Java码农
17.mybatis缓存有哪几种 和redis 缓存有啥区别 mybatis有缓存为什么还要用redis - 51CTO博客
18.mybatis的缓存机制有哪些和Redis的缓存机制比有什么不同 mybatis缓存原理 - 51CTO博客
19.1.【Java面试】让人醍醐灌顶的回答,系统中应该如何使用分布式缓存? - 哔哩哔哩
20.缓存穿透、缓存击穿、缓存雪崩、热key问题怎么解决? - 艾小仙人
21.缓存雪崩与穿透问题解析,如何避免和解决 - 度小视
22.经典面试题,大厂几个巧妙的方案,复杂高并发系统缓存设计 - 哔哩哔哩
23.【春招预热】2025Java春招面试突击课(7天速成版)MySQL数据库、Redis、Spring全家桶、JVM,分布式微服务…一周刷完,金三银四一路狂飙 - 哔哩哔哩
24.mybatis 二级缓存失效_面试题:MyBatis二级缓存 - CSDN博客
25.浅析mybatis里的缓存机制 - 一级缓存、二级缓存、二级缓存多表查询的问题及解决、二级缓存分布式问题 - 博客园
26.CSDN中mapper.xml更新后,MyBatis缓存失效问题如何解决?_编程语言-CSDN问答 - CSDN问答
27.spring mybatis 缓存失效原因_51CTO博客 - 51CTO博客
28.解锁MyBatis 缓存:深入剖析原理与典型实现示例展示 - 跟我从零开始学编程
29.MyBatis缓存揭秘:两级并存 - 七安Melody会彤彤
30.图解| 聊聊 MyBatis 缓存 - 悟空聊架构
31.关于MyBatis缓存你不知道的事 - 千锋Java学习站
32.MyBatis 的缓存机制 - RainbowSea
33.Mybatis二级缓存 和 用mysql redis实现的缓存 有什么区别? - Java我写的
34.spring mybatis 缓存失效原因 mybatis缓存key - 51CTO博客
35.MyBatis知识汇总(第十篇)【详解】MyBatis的缓存机制,一级缓存+失效的3种情况,二级缓存,详解,实例,注意事项 - 51CTO博客
36.十三、MyBatis缓存 - antiai
37.Mybatis 一级缓存,Mybatis 二级缓存,Mybatis 缓存失效 - 博客园
38.MyBatis的一级缓存和二级缓存 - 吉艾斯外
39.为什么不推荐使用 MyBatis 二级缓存,有哪些替代方案? - 腾讯云
40.JDBC痛点?MyBatis秒解 - 英俊的刚宝
41.【Java面试】阿里一面:MyBatis缓存机制的理解以及优缺点是什么? - 哔哩哔哩

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/917081.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/917081.shtml
英文地址,请注明出处:http://en.pswp.cn/news/917081.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式原子序列(Distributed Atomic Sequence)

这段内容是关于 Apache Ignite 中的 分布式原子序列&#xff08;Distributed Atomic Sequence&#xff09;&#xff0c;也就是一个分布式 ID 生成器。我们来一步步深入理解它的原理、用途和使用方式。&#x1f539; 一、核心概念&#xff1a;什么是分布式 ID 生成器&#xff1f…

VSCode——插件分享:Markdown PDF

该插件可以将markdown编写内容转成PDF。 ✅ 支持渲染图表、代码高亮、表格等 Markdown 内容 安装 Visual Studio Code安装插件&#xff1a;Markdown PDF 打开扩展商店&#xff0c;搜索 Markdown PDF 并安装 打开你的 .md 文件右键 → 点击 Markdown PDF: Export (pdf)自动生成 …

rust-模块树中引用项的路径

模块树中引用项的路径 为了告诉 Rust 在模块树中如何找到某个项&#xff0c;我们使用路径&#xff0c;就像在文件系统中导航时使用路径一样。要调用一个函数&#xff0c;我们需要知道它的路径。 路径有两种形式&#xff1a; 绝对路径是从 crate 根开始的完整路径&#xff1b…

mac n切换node版本报错Bad CPU type in executable

该node版本仅支持intel芯片&#xff0c;不支持Apple 芯片&#xff08;M1/M2/M3/M4&#xff09;&#xff0c;所以需要下载Rosetta 2 &#xff0c;让node可以在搭载 Apple 芯片的 Mac 上运行。 env: node: Bad CPU type in executable /opt/homebrew/bin/n: line 753: /usr/local…

经典算法之美:冒泡排序的优雅实现

经典算法之美&#xff1a;冒泡排序的优雅实现基本概念工作原理介绍具体实现代码实现总结基本概念 冒泡排序是一种简单的排序算法&#xff0c;通过重复比较相邻的元素并交换它们的位置来实现排序。它的名称来源于较小的元素像气泡一样逐渐“浮”到数组的顶端。 工作原理 介绍…

click和touch事件触发顺序 糊里糊涂解决的奇怪bug

问题详情 在嵌入式硬件设备里&#xff0c;测试 “点击input密码框&#xff0c;弹出第三方自带键盘&#xff0c;点击密码框旁的小眼睛&#xff0c;切换输入内容加密状态&#xff0c;键盘收起/弹出状态不变” 的功能逻辑&#xff1b;实际情况却是 “点击键盘或input框之外的任何地…

【0基础PS】Photoshop (PS) 理论知识

目录前言一、Photoshop 核心概念与定位​二、图像基础理论​三、图层理论&#xff1a;PS 的核心工作机制​四、选区与蒙版​五、调色核心理论​六、常用文件格式​学习建议​总结前言 在数字图像编辑领域&#xff0c;Photoshop&#xff08;简称 PS&#xff09;无疑是行业标杆级…

数据库 设计 pdm comment列表显示和生成建表sql

按如下步骤 生成见建表语句 comment非空使用comment 生成字段注释&#xff0c; 空的时候使用name 生成字段注释 sql脚本模板编辑 参考 PowerDesigner生成mysql字段comment 注释-腾讯云开发者社区-腾讯云 版本不同这边的设置不同 这个勾打上

嵌入式基础知识复习(C语言)

知识扩展7.28 嵌入式产品特点、开发环境、计算机组成、Linux终端初识1、嵌入式产品。特点&#xff1a;低功耗、根据用户需求定制。硬件&#xff1a;arm处理器。软件&#xff1a;Linux操作系统arm架构&#xff1a;精简指令集、低功耗&#xff08;移动/嵌入式&#xff09;。 …

LeetCode Hot 100 寻找两个正序数组的中位数

给定两个大小分别为 m 和 n 的正序&#xff08;从小到大&#xff09;数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log (mn)) 。示例 1&#xff1a;输入&#xff1a;nums1 [1,3], nums2 [2] 输出&#xff1a;2.00000 解释&#x…

监控场景视频质量异常修复:陌讯动态增强算法实战解析

原创声明&#xff1a;本文为原创技术解析&#xff0c;核心技术参数与架构引用自《陌讯技术白皮书》&#xff0c;禁止未经授权转载。一、行业痛点&#xff1a;视频质量异常的连锁难题在安防监控、智慧交通等场景中&#xff0c;视频质量异常已成为 AI 分析的主要瓶颈。据行业报告…

一个简单的mvvm示例与数据双向绑定

这就是一个简单的数据双向绑定的demo&#xff0c;参考即可&#xff08;cmakelist我没按他的写&#xff0c;但是大差不差&#xff09; 目录 1.示例demo File: CMakeLists.txt File: main.cpp File: model/physiologymodel.cpp File: viewmodel/physiologyviewmodel.h Fil…

哈希的概念及其应用

哈希的概念及其应用哈希概念常见的哈希其他哈希字符串哈希&#xff08;算法竞赛常用&#xff09;字符串哈希OJP3370 【模板】字符串哈希 - 洛谷P10468 兔子与兔子 - 洛谷哈希冲突哈希函数设计原则哈希冲突解决方法—闭散列闭散列的线性探测闭散列的二次探测哈希冲突解决方法—开…

【分布式的个人博客部署】

综合项目-搭建个人博客一、运行环境二、基础配置三、业务需求第一步&#xff1a;准备工作1、配置静态IP2、修改hosts映射3、开启防火墙4、时间同步5、配置免密ssh登录第二步&#xff1a;环境搭建1、Server-web端安装LNMP环境软件2、Server-NFS-DNS端上传博客软件3、Server-NFS-…

蓝桥杯----DS18B20温度传感器

&#xff08;二&#xff09;、温度传感器1、One-Wire总线One-Wire总线利用一根线实现双向通信。因此其协议对时序的要求较严格&#xff0c;如应答等时序都有明确的时间要求。基本的时序包括复位及应答时序、写一位时序读一位时序。单总线即只有一根数据线&#xff0c;系统中的数…

科技赋能成长 脑力启迪未来

——西安臻昊科技与秦岭云数智共筑脑科学教育新生态 2025年6月26日&#xff0c;西安臻昊科技&#xff08;集团&#xff09;有限责任公司与秦岭云数智&#xff08;陕西&#xff09;科技有限公司正式签署脑象评测技术战略合作协议&#xff0c;双方将依托技术互补与资源协同&#…

Docker部署的PostgreSQL慢查询日志配置指南

目录 1. 核心步骤 1.1 修改配置文件 1.2 动态加载配置&#xff08;无需重启容器&#xff09; 1.3 验证配置生效 1.3.1 查看参数 1.3.2 执行测试慢查询 2. 高级用法 2.1 使用分析工具 2.2 启用扩展 3. 注意事项 3.1 日志目录权限 3.2 性能影响 配置Docker部署的Pos…

C# 入门教程(四)委托详解

文章目录1、什么是委托2、委托的声明&#xff08;自定义委托&#xff09;3、委托的使用3.1 实例:把方法当作参数传给另一个方法3.2 注意:难精通易使用功能强大东西&#xff0c;一旦被滥用则后果非常严重4、委托的高级使用4.1 多播&#xff08;multicast&#xff09;委托4.2隐式…

React的基本语法和原理

3. React条件渲染某些情况下&#xff0c;姐妹的内容会根据不同的情况显示不同的内容&#xff0c;或者决定是否渲染某部分内容&#xff1a; 在React中&#xff0c;所有的条件判断和普通的JavaScript代码一致&#xff1b;常见的条件渲染的方式有哪些&#xff1f;方式一&#xff1…

如何在 Gradle 项目中添加依赖?(以添加 AndroidX 版本的 RecyclerView 为例)

1. 确保项目已启用 AndroidX RecyclerView 的现代版本属于 AndroidX 库&#xff0c;需确保项目已启用 AndroidX&#xff1a; 在 gradle.properties 中应有以下配置&#xff08;通常新建项目默认开启&#xff09;&#xff1a;android.useAndroidXtrue android.enableJetifiert…