mybatis二級緩存原理及測試

.1 mybatis二級緩存

1.1 二級緩存原理

Paste_Image.png

1.2.首先開啟mybatis二級緩存

sqlSession1去查詢用戶ID為1的用戶信息,查詢到的用戶信息會將查詢數(shù)據(jù)存儲到二級緩存中
如果sqlSession3去執(zhí)行相同的mapper下sql 執(zhí)行commit提交,就會清空mapper下的二級緩存區(qū)域
sqlSession2去查詢用戶ID為1的用戶信息,去緩存中找是否存在數(shù)據(jù),如果存在直接從緩存中取出數(shù)據(jù)

1.2.1二級緩存與一級緩存的區(qū)別:
1.二級緩存的范圍更大多個sqlSession可以共享一個userMapper的二級緩存區(qū)域 (按照namespace分)
2. userMapper有一個二級緩存區(qū)域,其他Mapper也有自己的二級緩存區(qū)域
3.每一個namespace的Mapper有一個二級緩存區(qū)域
4.如果兩個mapper的namespace相同,這兩個mapper執(zhí)行的sql查詢到的數(shù)據(jù)將存在相同的二級緩存區(qū)域中

1.3開啟二級緩存:

mybatis的二級緩存是mapper范圍級別,除了在sqlMapperConfig.xml中開啟二級緩存的總開關(guān),還要在具體的mapper.xml中來開啟二級緩存
在核心配置文件sqlMapConfig.xml中加入:

<setting name="cacheEnabled" value="true"/>

在userMapper.xml中開啟二級緩存,userMapper.xml下的sql執(zhí)行完后會將數(shù)據(jù)存在他的二級緩存中,如下:

Paste_Image.png

2.調(diào)用的pojo類需要實現(xiàn)序列化接口:

實現(xiàn)序列化是為了反序列化,將來的緩存數(shù)據(jù)不一定是存在內(nèi)存中,可能存在硬盤,遠程等等下,可以將數(shù)據(jù)取出進行反序列化:

Paste_Image.png

2.3 測試代碼:


    /**
     * 二級緩存測試
     */
    @Test
    public void cache2() {
        try {
            SqlSession sqlSession1 = SqlSessionFactory.openSession();
            SqlSession sqlSession2 = SqlSessionFactory.openSession();
            SqlSession sqlSession3 = SqlSessionFactory.openSession();
            // 第一次查詢
            UsersMapper usersMapper1 = sqlSession1.getMapper(UsersMapper.class);
            Users user1 = usersMapper1.findUsersById(1);
            System.out.println(user1);
            //執(zhí)行關(guān)閉,才能將sqlsession中的數(shù)據(jù)存入二級緩存區(qū)域
            sqlSession1.close();

            // 第二次查詢
            UsersMapper usersMapper2 = sqlSession2.getMapper(UsersMapper.class);
            Users user2 = usersMapper2.findUsersById(1);
            System.out.println(user2);
            sqlSession2.close();

            // 第三次查詢
            UsersMapper usersMapper3 = sqlSession3.getMapper(UsersMapper.class);
            Users user3 = usersMapper3.findUsersById(1);
            System.out.println(user3);
            sqlSession3.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

2.4 運行測試類:

Paste_Image.png

由上圖可見,只觸發(fā)了一次sql語句
下面進行中間提交操作,修改用戶信息

Paste_Image.png

執(zhí)行如下:

Paste_Image.png

所以.二級緩存執(zhí)行提交操作時候,會清空緩存,避免臟數(shù)據(jù).

2.5 userCache禁用二級緩存

在statement中設(shè)置useCache=false ,可以禁用當(dāng)前select語句的二級緩存,即每次查詢都會發(fā)出sql去查詢,默認情況下是TRUE,即該sql使用二級緩存,

Paste_Image.png

總結(jié):針對每次查詢都需要最新數(shù)據(jù)的sql,要設(shè)置成userCache= false

2.5 刷新緩存(清空緩存)

并不是再把數(shù)據(jù)哭的最新數(shù)據(jù)拿出來把它倒騰到緩存當(dāng)中,沒有這一出,mybatis刷新緩存就是清空緩存,一般情況下,一般情況下執(zhí)行commit操作都需要刷新緩存,Cache=TRUE表示刷新緩存,可以避免數(shù)據(jù)庫的臟讀,默認為true

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末坯门,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子寓盗,更是在濱河造成了極大的恐慌遭庶,老刑警劉巖错负,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锻弓,死亡現(xiàn)場離奇詭異搓茬,居然都是意外死亡兽掰,警方通過查閱死者的電腦和手機竿滨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門佳恬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人于游,你說我怎么就攤上這事毁葱。” “怎么了曙砂?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵头谜,是天一觀的道長。 經(jīng)常有香客問我鸠澈,道長柱告,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任笑陈,我火速辦了婚禮际度,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘涵妥。我一直安慰自己乖菱,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著窒所,像睡著了一般鹉勒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上吵取,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天禽额,我揣著相機與錄音,去河邊找鬼皮官。 笑死脯倒,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的捺氢。 我是一名探鬼主播藻丢,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼摄乒!你這毒婦竟也來了悠反?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤馍佑,失蹤者是張志新(化名)和其女友劉穎问慎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挤茄,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年冰木,在試婚紗的時候發(fā)現(xiàn)自己被綠了穷劈。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡踊沸,死狀恐怖歇终,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情逼龟,我是刑警寧澤评凝,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站腺律,受9級特大地震影響奕短,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜匀钧,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一翎碑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧之斯,春花似錦日杈、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽酿炸。三九已至,卻和暖如春涨冀,著一層夾襖步出監(jiān)牢的瞬間填硕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工蝇裤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留廷支,地道東北人。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓栓辜,卻偏偏與公主長得像恋拍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子藕甩,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容