日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java调优:Mybaitis的缓存优化

發(fā)布時間:2025/3/11 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java调优:Mybaitis的缓存优化 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

作者:肥朝,來自肥朝(ID:feichao_java)

我們先來看代碼


這段代碼中, Mybatis一共發(fā)了兩條SQL,這就好像說, Mybatis中沒有緩存,然后我們打開Mybatis的文檔一看,頓時震驚


這難道是騙人的,說好的默認(rèn)開啟緩存呢…..

其實不是的,默認(rèn)確實是開啟緩存的,但是我們還需要配置一點東西

UserMapper.xml


另外,對象還要實現(xiàn)序列化接口,否則報NotSerializableException的異常


設(shè)置完畢之后,我們再來嘗試insert的問題


此時發(fā)現(xiàn),發(fā)了3條SQL,那么究竟是什么原因呢?如下圖


看完這個圖,就明白為什么get(1L)->add()->get(1L)這個過程會發(fā)3條SQL了,因為insert的時候,清空了緩存

但是就算insert,并沒有影響到get(1L)的結(jié)果,但是你卻把他的緩存也清空了,這明顯不合理,那么我們怎么優(yōu)化呢?

那么我們可不可以這樣做呢?如圖:


也就是我們做了兩件事

  • list由于緩存命中率低,那么我們就不加入到緩存中

  • insert我們不清空緩存

那么在代碼中,我們具體是怎么實現(xiàn)的呢?

UserMapper.xml


這樣之后,我們Mybatis中的緩存就更高效了

【End】

老王給大家準(zhǔn)備一份「Java最常見200+面試題全解析」,助力大家找到更好的工作,這份面試題包含的模塊:

  • Java、JVM?最常見面試題解析

  • Spring、Spring?MVC、MyBatis、Hibernate?面試題解析

  • MySQL、Redis?面試題解析

  • RabbitMQ、Kafka、Zookeeper?面試解析

  • 微服務(wù)?Spring?Boot、Spring?Cloud?面試解析

掃描下面二維碼付費閱讀

關(guān)注下方二維碼,訂閱更多精彩內(nèi)容。

轉(zhuǎn)發(fā)朋友圈,是對我最大的支持。

總結(jié)

以上是生活随笔為你收集整理的Java调优:Mybaitis的缓存优化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。