Mybatis 踩坑第六彈—緩存

Mybatis 支持兩級緩存小泉,分別是一級緩存(session 級別曼库,又稱本地緩存)和二級緩存(namespace 級別禀酱,又稱全局緩存);

其中一級緩存默認(rèn)開啟涛救,在于數(shù)據(jù)庫相同的會話期間查詢到的數(shù)據(jù)會放在本地緩存畏邢,之后再查詢相同的數(shù)據(jù)會直接從本地緩存中取州叠;但在四種情況下棵红,一級緩存會失效:

1、使用不同的會話請求相同的數(shù)據(jù)咧栗;

2逆甜、使用相同的會話,請求不同的數(shù)據(jù)致板;

3交煞、使用相同的會話,在請求之間執(zhí)行了增刪改操作斟或,不論該操作是否針對一級緩存中的數(shù)據(jù)素征;

4、使用相同的會話萝挤,在請求之間主動(dòng)清楚了一級緩存(session.clearCache())御毅;

二級緩存默認(rèn)開啟(但未配置),工作機(jī)制為:當(dāng)使用 session 查詢完數(shù)據(jù)之后將數(shù)據(jù)先保存在一級緩存中怜珍,在 session 關(guān)閉時(shí)端蛆,將一級緩存的數(shù)據(jù)取出并放進(jìn)與之對應(yīng)的 map 中,不同的 namespace 之間不共享 map酥泛;使用流程:

1)開啟全局緩存配置今豆;

2)在 mapper.xml 文件中配置使用二級緩存(因?yàn)槎壘彺媸腔?namespace 的,每個(gè) mapper.xml 文件對應(yīng)一個(gè) namespace)

3)對應(yīng)的 POJO 或者 PO 必須實(shí)現(xiàn)序列化接口(因?yàn)楫?dāng) readOnly=false 時(shí)柔袁,緩存在返回?cái)?shù)據(jù)的時(shí)候會使用到序列化的技術(shù))

注意事項(xiàng):

1)對于首次查詢到的數(shù)據(jù)呆躲,默認(rèn)都是放在一級緩存中的,只有當(dāng) session 提交或者關(guān)閉之后捶索,數(shù)據(jù)才會轉(zhuǎn)移到二級緩存中插掂,也就是說在 session 提交或者關(guān)閉之前,二級緩存中是沒有相關(guān)數(shù)據(jù)的腥例;

2)cache 標(biāo)簽中中的 cacheEnabled=false 只會關(guān)閉二級緩存燥筷,而不會關(guān)閉一級緩存;select 標(biāo)簽中的 useCache=false 也只會關(guān)閉二級緩存院崇,優(yōu)先級高于 cache 標(biāo)簽肆氓;

3)對于每一個(gè)增刪改標(biāo)簽中都有 flushCache 屬性,當(dāng) flushCache=true時(shí)底瓣,每次執(zhí)行完增刪改之后會同時(shí)清空一級緩存和二級緩存谢揪;對于查詢標(biāo)簽蕉陋,默認(rèn) flushCache=false,當(dāng) flushCache=true 時(shí)拨扶,每個(gè)查詢操作執(zhí)行完凳鬓,都會清空一級緩存和二級緩存;

4)session.clearCache 只會清空一級緩存患民;

5)localCacheScope 全局設(shè)置可以配置一級緩存的作用域缩举,默認(rèn)值為 session(使用一級緩存),當(dāng)設(shè)定值為 statement 時(shí)匹颤,相當(dāng)于禁用一級緩存仅孩;

第三方緩存整合:

1)導(dǎo)入第三方緩存的 jar 包;

2)導(dǎo)入 Mybatis 與第三方緩存的適配包(GitHub 上的 Mybatis 頂級項(xiàng)目下)印蓖;

3)在 mapper.xml 中使用 cache 標(biāo)簽辽慕,通過 type 屬性指定適配包接口的全類名。

關(guān)注微信公眾號:Javall咖啡屋
每天更新各種技術(shù)學(xué)習(xí)心得體會


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末赦肃,一起剝皮案震驚了整個(gè)濱河市溅蛉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌他宛,老刑警劉巖船侧,帶你破解...
    沈念sama閱讀 223,126評論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異厅各,居然都是意外死亡镜撩,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評論 3 400
  • 文/潘曉璐 我一進(jìn)店門讯检,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人卫旱,你說我怎么就攤上這事人灼。” “怎么了顾翼?”我有些...
    開封第一講書人閱讀 169,941評論 0 366
  • 文/不壞的土叔 我叫張陵投放,是天一觀的道長。 經(jīng)常有香客問我适贸,道長灸芳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,294評論 1 300
  • 正文 為了忘掉前任拜姿,我火速辦了婚禮烙样,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蕊肥。我一直安慰自己谒获,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,295評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著批狱,像睡著了一般裸准。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赔硫,一...
    開封第一講書人閱讀 52,874評論 1 314
  • 那天炒俱,我揣著相機(jī)與錄音,去河邊找鬼爪膊。 笑死权悟,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的惊完。 我是一名探鬼主播僵芹,決...
    沈念sama閱讀 41,285評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼小槐!你這毒婦竟也來了拇派?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,249評論 0 277
  • 序言:老撾萬榮一對情侶失蹤凿跳,失蹤者是張志新(化名)和其女友劉穎件豌,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體控嗜,經(jīng)...
    沈念sama閱讀 46,760評論 1 321
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡茧彤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,840評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了疆栏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片曾掂。...
    茶點(diǎn)故事閱讀 40,973評論 1 354
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖壁顶,靈堂內(nèi)的尸體忽然破棺而出珠洗,到底是詐尸還是另有隱情,我是刑警寧澤若专,帶...
    沈念sama閱讀 36,631評論 5 351
  • 正文 年R本政府宣布许蓖,位于F島的核電站,受9級特大地震影響调衰,放射性物質(zhì)發(fā)生泄漏膊爪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,315評論 3 336
  • 文/蒙蒙 一嚎莉、第九天 我趴在偏房一處隱蔽的房頂上張望米酬。 院中可真熱鬧,春花似錦趋箩、人聲如沸淮逻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽爬早。三九已至哼丈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間筛严,已是汗流浹背醉旦。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評論 1 275
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留桨啃,地道東北人车胡。 一個(gè)月前我還...
    沈念sama閱讀 49,431評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像照瘾,于是被迫代替她去往敵國和親匈棘。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,982評論 2 361

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