Java调优:Mybaitis的缓存优化
作者:肥朝,來自肥朝(ID:feichao_java)
我們先來看代碼
這段代碼中, Mybatis一共發了兩條SQL,這就好像說, Mybatis中沒有緩存,然后我們打開Mybatis的文檔一看,頓時震驚
這難道是騙人的,說好的默認開啟緩存呢…..
其實不是的,默認確實是開啟緩存的,但是我們還需要配置一點東西
UserMapper.xml
另外,對象還要實現序列化接口,否則報NotSerializableException的異常
設置完畢之后,我們再來嘗試insert的問題
此時發現,發了3條SQL,那么究竟是什么原因呢?如下圖
看完這個圖,就明白為什么get(1L)->add()->get(1L)這個過程會發3條SQL了,因為insert的時候,清空了緩存
但是就算insert,并沒有影響到get(1L)的結果,但是你卻把他的緩存也清空了,這明顯不合理,那么我們怎么優化呢?
那么我們可不可以這樣做呢?如圖:
也就是我們做了兩件事
list由于緩存命中率低,那么我們就不加入到緩存中
insert我們不清空緩存
那么在代碼中,我們具體是怎么實現的呢?
UserMapper.xml
這樣之后,我們Mybatis中的緩存就更高效了
【End】
老王給大家準備一份「Java最常見200+面試題全解析」,助力大家找到更好的工作,這份面試題包含的模塊:
Java、JVM?最常見面試題解析
Spring、Spring?MVC、MyBatis、Hibernate?面試題解析
MySQL、Redis?面試題解析
RabbitMQ、Kafka、Zookeeper?面試解析
微服務?Spring?Boot、Spring?Cloud?面試解析
掃描下面二維碼付費閱讀
關注下方二維碼,訂閱更多精彩內容。
轉發朋友圈,是對我最大的支持。
總結
以上是生活随笔為你收集整理的Java调优:Mybaitis的缓存优化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL 常见的开放性问题
- 下一篇: Java中常用的4个Json库,哪个性能