MyBatis框架之緩存

文章目錄

  • MyBatis框架之緩存
  • 緩存
  • 一級緩存
  • 二級緩存

緩存

一級緩存

Mybatis對緩存提供支持,但是在沒有配置的默認情況下,它只開啓一級緩存,一級緩存只是相對 於同一個SqlSession而言。

所以在參數和SQL完全一樣的情況下,我們使用同一個SqlSession對象調用一個Mapper方法,往往只執行一次SQL,因為使用SelSession第一次查詢後,MyBatis會 將其放在緩存中,以後再查詢的時候,如果沒有聲明需要刷新,並且緩存沒有超時的情況下, SqlSession都會取出當前緩存的數據,而不會再次發送SQL到數據庫。

二級緩存

MyBatis的二級緩存是Application級別的緩存,它可以提高對數據庫查詢的效率,以提高應用的性能。

  • 開啓二級緩存
  • 配置文件mybatis-config.xml中加入
<settings>
    <!-- 開啓二級緩存 -->
    <setting name="cacheEnabled" value="true"/>
</settings>
  • 在mapper.xml中開啓二緩存,mapper.xml下的sql執行完成會存儲到它的緩存區
<cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/>
  • 參數説明
  • eviction
  • LRU 最近最少使用的:移除最長時間不被使用的對象
  • FIFO 先進先出:按對象進入緩存的順序來移除它們
  • SOFT 軟引用:移除基於垃圾回收器狀態和軟引用規則的對象
  • WEAK 弱引用:更積極地移除基於垃圾收集器狀態和弱引用規則的對象
  • flushInterval :刷新間隔,單位為毫秒
  • size :引用數目,默認值是1024
  • readOnly :只讀,屬性可以被設置為true或false
  • select,insert,update標籤中的緩存屬性
  • useCache=false 禁用二級緩存
  • flushCache=true 刷新緩存 ,一般用於insert,update