mybatis清除一級(jí)緩存的幾種方式
mybatis清除一級(jí)緩存方式
1、手動(dòng)清空
sqlSession.clearCache()
2、Options注解
public interface UserMapper{
@Options(flushCache= Options.FlushCachePolicy.TRUE)
User selectById(@params("id")Integer id)
}3、調(diào)用了修改的方法時(shí),底層直接調(diào)用sqlSession.clearCache()一次性全部清空
4、在setting中關(guān)閉一級(jí)緩存
locaCacheScope = STATEMENT
5、手動(dòng)提交/回滾
mybatis一級(jí)緩存何時(shí)失效
mybatis的一級(jí)緩存是 SqlSession 級(jí)別的緩存,它存在于 SqlSession 的生命周期內(nèi),當(dāng) SqlSession 關(guān)閉時(shí),一級(jí)緩存也會(huì)隨之失效。
具體來(lái)說(shuō),一級(jí)緩存可能失效的情況包括:
- SqlSession 執(zhí)行 clearCache() 方法,顯式地清空緩存。
- SqlSession 執(zhí)行 close() 方法,關(guān)閉 SqlSession 時(shí),所有的一級(jí)緩存數(shù)據(jù)都會(huì)被銷(xiāo)毀。
- SqlSession 開(kāi)始一個(gè)事務(wù)后,如果事務(wù)被提交或者回滾則會(huì)清空當(dāng)前 SqlSession 對(duì)應(yīng)的所有的一級(jí)緩存。
- SqlSession 在執(zhí)行 insert, update, delete 等更新操作時(shí),會(huì)清空當(dāng)前 SqlSession 對(duì)應(yīng)的所有的一級(jí)緩存。因?yàn)檫@些操作可能會(huì)對(duì)查詢結(jié)果產(chǎn)生影響,緩存數(shù)據(jù)無(wú)效。
總之:
我們?cè)谑褂?MyBatis 的時(shí)候,需要充分了解一級(jí)緩存的實(shí)現(xiàn)原理和失效情況,避免因?yàn)榫彺鎲?wèn)題導(dǎo)致程序運(yùn)行出現(xiàn)錯(cuò)誤。
如果遇到緩存失效的問(wèn)題,可以通過(guò)修改配置文件或者手動(dòng)清空緩存等措施來(lái)解決。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
在IDEA中創(chuàng)建父工程和子模塊module的方法步驟
這篇文章主要介紹了在IDEA中創(chuàng)建父工程和子模塊module的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-02-02
SpringBoot解決Required?String?parameter?xxx?is?not?prese
這篇文章主要介紹了SpringBoot解決Required?String?parameter?xxx?is?not?present問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01
詳解Java中如何定義和訪問(wèn)靜態(tài)字段和方法
在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,我們通常使用類(lèi)來(lái)創(chuàng)建對(duì)象,類(lèi)中有許多成員變量和方法,它們是直接屬于對(duì)象實(shí)例的,與之對(duì)應(yīng)的還有一類(lèi)成員,那就是靜態(tài)成員,本文就來(lái)和大家聊聊Java是如何定義訪問(wèn)靜態(tài)成員的吧2023-05-05
Java設(shè)計(jì)模式之動(dòng)態(tài)代理
今天小編就為大家分享一篇關(guān)于Java設(shè)計(jì)模式之動(dòng)態(tài)代理,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-01-01

