MyBatis一级二级缓存是什么 MyBatis缓存机制详解【分析】


MyBatis一级缓存是SqlSession级私有缓存,默认开启,同会话内重复查询直接返回缓存,执行DML即清空;二级缓存是Mapper级共享缓存,需手动配置,commit后写入,DML操作清空对应namespace全部缓存。

mybatis一级二级缓存是什么 mybatis缓存机制详解【分析】

MyBatis 一级缓存和二级缓存,是它内置的两层本地缓存机制,核心目标很实在:减少重复 SQL 查询、降低数据库压力、提升读取性能。它们不是可有可无的附加功能,而是影响数据一致性与系统行为的关键设计点,用对了提效,用错了容易出脏数据。

一级缓存:SqlSession 级别的“私有小本本”

一级缓存默认开启,无需配置,作用域严格限定在**同一个 SqlSession 实例内**。它底层是一个 PerpetualCache(本质是 HashMap),由 SqlSession 内部的 Executor 持有。

  • 同一次 SqlSession 中执行两次完全相同的查询(SQL + 参数 + 环境一致),第一次查库并写入缓存,第二次直接返回缓存结果
  • 只要在该 SqlSession 中执行过任意 insert/update/delete 操作,不管是否 commit,整个一级缓存都会被清空
  • 不同 SqlSession 之间互不共享,哪怕查的是同一张表、同一个 ID,也各自维护独立缓存
  • 常见陷阱:事务未提交时,另一个线程用新 SqlSession 查询,看到的仍是旧数据——因为一级缓存不跨会话,也不感知外部变更

二级缓存:Mapper 级别的“公共公告栏”

二级缓存作用域是 **Mapper 的 namespace**,多个 SqlSession 可以共享同一份缓存数据,但需要手动开启,且有明确前提条件。

  • 必须在 MyBatis 全局配置中启用:<setting name="cacheEnabled" value="true"></setting>
  • 必须在对应 Mapper XML 文件中添加 <cache></cache><cache-ref></cache-ref>
  • 所查实体类必须实现 Serializable 接口(因缓存需序列化存储)
  • 只有在 SqlSession 调用 close()commit() 后,查询结果才会真正写入二级缓存;未提交的查询不参与二级缓存写入
  • 同 namespace 下任意增删改操作,会清空该 namespace 对应的整个二级缓存区域

缓存查询顺序与失效逻辑

当一个查询发起时,MyBatis 的实际查找路径是:先查二级缓存 → 再查一级缓存 → 最后查数据库。写入则相反:结果先存一级缓存,commit/close 后再同步到二级缓存。

AI大学堂 AI大学堂

科大讯飞打造的AI学习平台

AI大学堂 179 查看详情 AI大学堂
  • 缓存 key 由多要素构成:MappedStatement ID + SQL 语句 + 参数值 + 分页参数 + 环境 ID,确保精准命中
  • 所有 DML 操作(insert/update/delete)都会触发对应 namespace 的缓存失效,但不会影响其他 namespace
  • 一级缓存失效是“全清”,二级缓存失效也是“全清”,不支持按 key 精细剔除(除非自定义 Cache 实现)

什么时候该用、不该用?

缓存不是银弹。适合缓存的数据通常具备这些特征:读多写少、实时性要求不高、变更影响范围可控。

  • 适合:省市区字典表、状态码枚举、配置项、用户基本信息(如昵称、头像 URL)
  • 慎用:账户余额、库存数量、订单状态、涉及强一致性的业务场景
  • 禁用:高并发写频繁的表、存在跨服务更新的表(二级缓存无法感知外部变更)
  • 分布式环境下建议用 Redis 等第三方缓存替代二级缓存,避免节点间数据不一致

基本上就这些。缓存机制不复杂,但细节决定成败——尤其是失效时机和作用域边界,稍不注意就会埋下数据不一致的隐患。

以上就是MyBatis一级二级缓存是什么 MyBatis缓存机制详解【分析】的详细内容,更多请关注其它相关文章!


# app  # session  # 状态码  # 作用域  # redis  # 医疗网站营销推广方案  # 广州物业seo公司有哪些  # 去哪找单位网站建设  # 益阳网站建设模板下载  # 登封网站建设规划  # 单页seo技术案例  # 大连网站建设企业  # 营销推广稳定吗  # seo长尾引流  # 低价营销型网站建设厂家  # 有哪些  # 也不  # 就会  # 都有哪些  # 是一个  # 的是  # 该用  # 如何做  # 几种  # 清空  # red 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 《王者荣耀世界》英雄获取攻略  苹果手机缓存怎么清除_苹果手机缓存如何清除iphone各版本操作步骤  美发店速赢秘籍  抖音作品被限流怎么办 抖音内容优化与流量恢复方法  拷贝漫画2025网页版入口 拷贝漫画官网免费看全集  @Team是什么?揭秘团队含义  AO3永久镜像入口开放_AO3最新网址兼容所有浏览器  sublime如何配置PHP开发环境_在sublime中运行与调试PHP代码  创建快捷方式启动系统保护  POKI小游戏在线免费入口链接 POKI小游戏无下载秒玩玩  火狐浏览器如何刷新修复浏览器 火狐浏览器“重置Firefox”功能详解  PHP中实现JSON数据数组分页的教程  mysql如何限制远程访问_mysql远程访问限制方法  苹果电脑如何快速查看电池状态 苹果电脑电池信息快捷方法  小米手机屏幕失灵乱跳怎么办 屏幕触控问题自检与临时解决方法【应急】  ao3入口镜像地址 ao3镜像入口可靠跳转  如何自定义苹果手机铃声  铁路12306官网入口 铁路12306中国铁路官网登录首页  CDR如何复制交互式填充色  123网页端官方登录页 123邮箱网页版即时通讯服务  Win10显卡驱动安装失败怎么办 Win10使用DDU彻底卸载驱动【解决】  《edge浏览器》关闭翻译功能方法  圆通快递官网入口查询单号 手机版官方查询入口  J*aScript中高效处理用户输入:从Keyup事件到表单提交的优化实践  银信通自动开通原因揭秘  实现可重用自定义Python Range类  Apple Music无故扣费引质疑  苹果iPhone14ProMax如何新建AppleID_iPhone14ProMax新建AppleID具体流程  优化Flask模板中SQLAlchemy查询迭代标签:处理字符串空格问题  PDF文件去水印平台入口 PDF水印删除网址  如何在CSS中设置背景图像:一个全面指南  有道AI翻译入口 智能写作官方网站入口  Mac如何开启画中画模式_Mac Safari浏览器视频画中画功能  高德地图导航路线偏差报警频繁怎么办 高德地图路线偏差修复与优化方法  iPhone17Pro如何连接蓝牙耳机_iPhone17Pro蓝牙设备配对与连接方法介绍  向往的生活小游戏启动处_向往的生活小游戏立即启动  植物大战僵尸95版游戏版下载_植物大战僵尸95版游戏版安装指南  百度识图图像分析 百度识图识别平台  小米倒班助手添加日历提醒  如何高效地基于键列值映射DataFrame中的多个列  LocoySpider如何批量采集电商商品_LocoySpider电商采集的模板应用  三角洲行动2025年9月10日摩斯密码分享  win11讲述人怎么关闭 Win11屏幕朗读辅助功能禁用方法【技巧】  稻壳阅读器官方直达网址链接 稻壳阅读器文档阅读平台主页资源入口  使用VS Code调试Python代码:从入门到精通  AO3中文入口稳定分享_AO3官网HTTPS看文详解  51漫画网实时入口 51漫画网页版官方免费漫画入口  豆包AI怎样为教育场景定制答疑逻辑_为教育场景定制豆包AI答疑逻辑方案【方案】  Win10锁屏时间怎么设置 Win10调整自动锁屏时间方法  荣耀Magic6 Pro拍照成像偏暗_荣耀Magic6 Pro夜景优化 

 2025-12-20

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.