最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

1.MyBatis的一級緩存

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

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

  • 不同的SqlSession對應(yīng)不同的一級緩存
  • 同一個(gè)SqlSession但是查詢條件不同
  • 同一個(gè)SqlSession兩次查詢期間執(zhí)行了任何一次增刪改操作
  • 同一個(gè)SqlSession兩次查詢期間手動(dòng)清空了緩存( 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 共用一個(gè)sqlSession1 因?yàn)榇嬖谝患壘彺?,所以只?zhí)行一次SQL

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

2.MyBatis的二級緩存

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

二級緩存開啟的條件:

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

使二級緩存失效的情況:

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

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

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

① eviction 屬性:緩存回收策略,默認(rèn)的是 LRU 。

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

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

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

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

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

④ readOnly 屬性:只讀, true/false

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

4.MyBatis緩存查詢的順序

先查詢二級緩存,因?yàn)槎壘彺嬷锌赡軙?huì)有其他程序已經(jīng)查出來的數(shù)據(jù),可以拿來直接使用。

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

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

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

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

相關(guān)文章

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

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

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

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

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

    RestTemplate 401 獲取錯(cuò)誤信息的處理方案

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

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

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

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

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

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

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

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

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

    淺談JAVA中輸入輸出流實(shí)例詳解

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

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

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

    詳解Java中Collector接口的組成

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

最新評論

长岭县| 延吉市| 门源| 集贤县| 丹寨县| 台东县| 青神县| 靖安县| 邯郸县| 吴桥县| 荥经县| 重庆市| 孟连| 泰州市| 吕梁市| 宽城| 翁源县| 兴海县| 喀喇沁旗| 凤台县| 隆子县| 宁城县| 靖宇县| 疏附县| 万山特区| 云浮市| 延吉市| 安龙县| 武穴市| 林芝县| 上林县| 阿鲁科尔沁旗| 长顺县| 屏东市| 法库县| 宿松县| 岑巩县| 连南| 塘沽区| 抚顺县| 浑源县|