小老虎的開發(fā)記述【十四】SpringBoot+MyBatis一級(jí)緩存失效問題

今天,在寫一個(gè)路由支付接口的時(shí)候,突然想起來數(shù)據(jù)量很大。需要不停的查詢數(shù)據(jù)比對(duì)數(shù)據(jù)。在發(fā)現(xiàn)使用JDK8之后的lambda表達(dá)式,并不能解決這個(gè)問題。
因?yàn)?,是需要?duì)數(shù)據(jù)進(jìn)行模糊查詢的。于是,就想到了MyBatis一級(jí)緩存。使用之后發(fā)現(xiàn)Mybatis的一級(jí)緩存竟然失效了。(因?yàn)橛貌坏蕉?jí)緩存,就不需要在配置文件里面配置了)。
Google了半天,最后在一篇博客里面發(fā)現(xiàn)了解決方法。

MyBatis一級(jí)緩存是指SqlSession。一級(jí)緩存作用域是一個(gè)SqlSession。MyBatis默認(rèn)開啟一級(jí)緩存。

在同一個(gè)SqlSession中,執(zhí)行相同的查詢SQL,第一次會(huì)去查詢數(shù)據(jù)庫,并寫到緩存中;第二次直接從緩存中取。當(dāng)執(zhí)行SQL時(shí)兩次查詢中間發(fā)生了增刪改操作,則SqlSession的緩存清空。

你只需要在你的方法上加上@Transactional注解就行了。
但是,可能大家會(huì)想,因?yàn)橐粋€(gè)一級(jí)緩存就需要在查詢的service方法上加注解,很費(fèi)勁。
但是,我需要實(shí)現(xiàn)的功能是有CRUD中的CU的。所以,也必須加上注解。
即使加上事務(wù)注解的話,也沒關(guān)系啊。因?yàn)樾枰褂玫骄彺娴?code>service只能是極個(gè)別的,如果很多的話,則說明業(yè)務(wù)設(shè)計(jì)有問題了。

最后附上博客地址

https://blog.csdn.net/u013887008/article/details/80379938

https://www.cnblogs.com/QQParadise/articles/5109633.html

https://www.cnblogs.com/xdp-gacl/p/4270403.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容