這篇文章將為大家詳細(xì)講解有關(guān)如何進(jìn)行Mybaitis的緩存優(yōu)化,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:申請(qǐng)域名、雅安服務(wù)器托管、營銷軟件、網(wǎng)站建設(shè)、九江網(wǎng)站維護(hù)、網(wǎng)站推廣。
我們先來看代碼
這段代碼中, Mybatis一共發(fā)了兩條SQL,這就好像說, Mybatis中沒有緩存,然后我們打開Mybatis的文檔一看,頓時(shí)震驚
這難道是騙人的,說好的默認(rèn)開啟緩存呢…..
其實(shí)不是的,默認(rèn)確實(shí)是開啟緩存的,但是我們還需要配置一點(diǎn)東西
UserMapper.xml
另外,對(duì)象還要實(shí)現(xiàn)序列化接口,否則報(bào)NotSerializableException
的異常
設(shè)置完畢之后,我們?cè)賮韲L試insert
的問題
此時(shí)發(fā)現(xiàn),發(fā)了3條SQL,那么究竟是什么原因呢?如下圖
看完這個(gè)圖,就明白為什么get(1L)->add()->get(1L)
這個(gè)過程會(huì)發(fā)3條SQL了,因?yàn)?code>insert的時(shí)候,清空了緩存
但是就算insert
,并沒有影響到get(1L)
的結(jié)果,但是你卻把他的緩存也清空了,這明顯不合理,那么我們?cè)趺磧?yōu)化呢?
那么我們可不可以這樣做呢?如圖:
也就是我們做了兩件事
list
由于緩存命中率低,那么我們就不加入到緩存中
insert
我們不清空緩存
那么在代碼中,我們具體是怎么實(shí)現(xiàn)的呢?
UserMapper.xml
關(guān)于如何進(jìn)行Mybaitis的緩存優(yōu)化就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。