mybatis 3.x 緩存Cache的使用


mybatis 3.x 已經支持cache功能了,使用很簡單,在mappper的xml文件里添加以下節點:

 1 <mapper namespace="com.cnblogs.yjmyzz.mybatis.mapper.OrderMapper">
 2 
 3     <cache 
 4         eviction="LRU"
 5         flushInterval="60000"
 6         size="1024"
 7         readOnly="true"
 8     />    
 9 ...
10 </mapper>

這里有幾個要注意的地方:

eviction是緩存的淘汰算法,可選值有"LRU"、"FIFO"、"SOFT"、"WEAK",缺省值是LRU

flashInterval指緩存過期時間,單位為毫秒,60000即為60秒,缺省值為空,即只要容量足夠,永不過期

size指緩存多少個對象,默認值為1024

readOnly是否只讀,如果為true,則所有相同的sql語句返回的是同一個對象(有助於提高性能,但並發操作同一條數據時,可能不安全),如果設置為false,則相同的sql,后面訪問的是cache的clone副本。

 

上面這個是全局設置,在每條單獨的sql語句上,還可以有局部設置,比如:

<select id="getOrder" parameterType="int" resultType="TOrder"  useCache="false">
        ...
    </select>

useCache="false"表示該select語句不使用緩存(即使xml最開頭的全局cache啟用)

默認情況下,如果全局開啟了緩存,insert/update/delete成功后,會自動刷新相關的緩存項,但有一點要特別注意:在mybatis與hibernate混用時,由於mybatis與hibernate的緩存是無關的,如果用mybatis做select查詢,用hibernate做insert/update/delete,hibernate對數據的修改,並不會刷新mybatis的緩存。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM