亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MyBatis一級與二級緩存相關(guān)配置

 更新時間:2023年01月03日 17:06:46   作者:熱愛編程的小白白  
mybatis-plus是一個Mybatis的增強工具,在Mybatis的基礎(chǔ)上只做增強不做改變,為簡化開發(fā)、提高效率而生,這篇文章帶你了解Mybatis的一級和二級緩存

1.MyBatis的一級緩存

一級緩存是 SqlSession 級別的,通過同一個 SqlSession 查詢的數(shù)據(jù)會被緩存,下次查詢相同的數(shù)據(jù),就 會從緩存中直接獲取,不會從數(shù)據(jù)庫重新訪問

使一級緩存失效的四種情況:

  • 不同的SqlSession對應不同的一級緩存
  • 同一個SqlSession但是查詢條件不同
  • 同一個SqlSession兩次查詢期間執(zhí)行了任何一次增刪改操作
  • 同一個SqlSession兩次查詢期間手動清空了緩存( sqlSession.clearCache();)

案例:

    public void test(){
        SqlSessionUtils sqlSessionUtils1 = new SqlSessionUtils();
        SqlSession sqlSession1 = sqlSessionUtils1.getSqlSession();
        EmpMapper mapper1 = sqlSession1.getMapper(EmpMapper.class);
        Emp empById1 = mapper1.getEmpById(1);
        System.out.println(empById1);
        Emp empById2 = mapper1.getEmpById(1);
        System.out.println(empById2);
        SqlSession sqlSession2 = sqlSessionUtils1.getSqlSession();
        EmpMapper mapper2 = sqlSession2.getMapper(EmpMapper.class);
        Emp empById3 = mapper2.getEmpById(1);
        System.out.println(empById3);
    }

empById1,empById2 共用一個sqlSession1 因為存在一級緩存,所以只執(zhí)行一次SQL

empById3 用的是sqlSession2 (不同的SqlSession對應不同的一級緩存),故會重新執(zhí)行SQL

2.MyBatis的二級緩存

二級緩存是 SqlSessionFactory 級別,通過同一個 SqlSessionFactory 創(chuàng)建的 SqlSession 查詢的結(jié)果會被 緩存;此后若再次執(zhí)行相同的查詢語句,結(jié)果就會從緩存中獲取

二級緩存開啟的條件:

  • a>在核心配置文件中,設(shè)置全局配置屬性cacheEnabled="true",默認為true,不需要設(shè)置
  • b>在映射文件中設(shè)置標簽<cache/>
  • c>二級緩存必須在SqlSession關(guān)閉或提交之后有效
  • d>查詢的數(shù)據(jù)所轉(zhuǎn)換的實體類類型必須實現(xiàn)序列化的接口

使二級緩存失效的情況:

  • 兩次查詢之間執(zhí)行了任意的增刪改,會使一級和二級緩存同時失效

3.二級緩存的相關(guān)配置

在 mapper 配置文件中添加的 cache 標簽可以設(shè)置一些屬性:

① eviction 屬性:緩存回收策略,默認的是 LRU 。

  • LRU(Least Recently Used) – 最近最少使用的:移除最長時間不被使用的對象。
  • FIFO(First in First out) – 先進先出:按對象進入緩存的順序來移除它們。
  • SOFT – 軟引用:移除基于垃圾回收器狀態(tài)和軟引用規(guī)則的對象。
  • WEAK – 弱引用:更積極地移除基于垃圾收集器狀態(tài)和弱引用規(guī)則的對象。

② flushInterval 屬性:刷新間隔,單位毫秒

  • 默認情況是不設(shè)置,也就是沒有刷新間隔,緩存僅僅調(diào)用語句時刷新

③ size 屬性:引用數(shù)目,正整數(shù)

  • 代表緩存最多可以存儲多少個對象,太大容易導致內(nèi)存溢出

④ readOnly 屬性:只讀, true/false

  • true:只讀緩存;會給所有調(diào)用者返回緩存對象的相同實例。因此這些對象不能被修改。這提供了很重 要的性能優(yōu)勢。
  • false:讀寫緩存;會返回緩存對象的拷貝(通過序列化)。這會慢一些,但是安全,因此默認是 false。

4.MyBatis緩存查詢的順序

先查詢二級緩存,因為二級緩存中可能會有其他程序已經(jīng)查出來的數(shù)據(jù),可以拿來直接使用。

如果二級緩存沒有命中,再查詢一級緩存

如果一級緩存也沒有命中,則查詢數(shù)據(jù)庫

SqlSession 關(guān)閉之后,一級緩存中的數(shù)據(jù)會寫入二級緩存

到此這篇關(guān)于MyBatis一級與二級緩存相關(guān)配置的文章就介紹到這了,更多相關(guān)MyBatis緩存內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java實現(xiàn)聯(lián)系人管理系統(tǒng)

    Java實現(xiàn)聯(lián)系人管理系統(tǒng)

    這篇文章主要為大家詳細介紹了Java實現(xiàn)聯(lián)系人管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Hashmap非線程安全關(guān)于hash值沖突處理

    Hashmap非線程安全關(guān)于hash值沖突處理

    這篇文章主要為大家介紹了Hashmap非線程安全關(guān)于hash值沖突的處理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-04-04
  • RestTemplate 401 獲取錯誤信息的處理方案

    RestTemplate 401 獲取錯誤信息的處理方案

    這篇文章主要介紹了RestTemplate 401 獲取錯誤信息的處理方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java基礎(chǔ)之八大排序算法

    Java基礎(chǔ)之八大排序算法

    這篇文章主要介紹了Java基礎(chǔ)之八大排序算法,文中有非常詳細的代碼示例,對正在學習java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • java 使用poi 導入Excel數(shù)據(jù)到數(shù)據(jù)庫的步驟

    java 使用poi 導入Excel數(shù)據(jù)到數(shù)據(jù)庫的步驟

    這篇文章主要介紹了java 使用poi 導入Excel 數(shù)據(jù)到數(shù)據(jù)庫的步驟,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-12-12
  • Mybatis動態(tài)調(diào)用表名和字段名的解決方法

    Mybatis動態(tài)調(diào)用表名和字段名的解決方法

    今天在項目開發(fā)中有個業(yè)務是需要限制各個用戶對某些表里的字段查詢以及某些字段是否顯示,這種情況下,就需要構(gòu)建sql來動態(tài)傳入表名、字段名了,下面給大家介紹mybatis動態(tài)調(diào)用表名和字段名的解決方法,一起看看吧
    2016-10-10
  • Java解析變量公式的簡單示例

    Java解析變量公式的簡單示例

    在Java編程中,經(jīng)常會遇到需要解析表達式或公式的情況,特別是涉及到動態(tài)計算或配置項的場景,在本篇文章中,我將介紹如何在Java中解析變量公式,并給出一個簡單的實現(xiàn)示例,需要的朋友可以參考下
    2024-10-10
  • 淺談JAVA中輸入輸出流實例詳解

    淺談JAVA中輸入輸出流實例詳解

    Java中的流分為兩種,一種是字節(jié)流,另一種是字符流。這篇文章主要介紹了JAVA中輸入輸出流的相關(guān)資料,需要的朋友可以參考下
    2016-07-07
  • 淺析Spring和MyBatis整合及逆向工程

    淺析Spring和MyBatis整合及逆向工程

    這篇文章主要介紹了Spring和MyBatis整合及逆向工程的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • 詳解Java中Collector接口的組成

    詳解Java中Collector接口的組成

    今天給大家?guī)淼氖顷P(guān)于Java基礎(chǔ)的相關(guān)知識,文章圍繞著Collector接口的組成展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06

最新評論