MyBatis 的兩級緩存機制

現實分布式項目中會不會開啟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…