MyBatis提供了一級緩存和二級緩存
配置 | 說明 | 默認值 | 可選值 |
---|---|---|---|
cacheEnabled | 全局緩存的開關 | true | true false |
localCacheScope | 本地緩存,SESSION表示執行的sql結果緩存數據可以在同一個sqlSession共享, 而STATEMENT,則同只有在單條語句會被緩存, 兩條語句不能共享緩存數據 | SESSION | SESSION STATEMENT |
<!-- 默認值 --><setting name="cacheEnabled" value="true"/><setting name="cacheEnabled" value="SESSION"/>
flushCache=true表示該語句的執行結果,會清空本地緩存以及2級緩存 useCache="true"表示該語句的執行結果,會被緩存到到2級緩存 默認值: <select flushCache="false" useCache="true"> <insert/update/delete flushCache="true"> <cache>:當前Mapper的緩存配置,二級緩存 <cache-ref>:cache只對特定的Namespace使用,即每個namespace使用一個cache實例,如果要多個namespace使用同一個cache實例,則可以使用cache-ref來引用 <cache blocking="" eviction="" flushInterval="" readOnly="" size="" type=""> <property name="" value=""/> </cache> <cache-ref namespace=""/>
屬性 | 說明 | 默認值 | 可選值 |
---|---|---|---|
eviction | 回收內存策略 | LRU | LRU FIFO SOFT WEAK |
flushInterval | 刷新間隔 | 沒設置 | 大于0 (單位:ms) |
size | 緩存對象的數量 | 1024 | 大于0 |
readOnly | 如果為true會返回所有調用者同一個實例,盡管提高了性能, 但是需要程序保證實例對象不被修改,如果為false, 則為讀寫緩存,會通過序列化返回緩存對象的一份Copy, 較慢,但是比較安全 | false | true false |
type | 可以指定自定義緩存,但是該類必須實現 org.apache.ibatis.cache.Cache接口 | com....class |
<!-- 該屬性會調用setCacheFile方法(setter),將屬性值注入 --><cache type="com.domain.something.MyCustomCache"> <property name="cacheFile" value="/tmp/my-custom-cache.tmp"/></cache>
MapperA.xml
<mapper namespace="com.jabnih.demo.mapper.MapperA"> <cache /></mapper>
MapperB.xml
<mapper namespace="com.jabnih.demo.mapper.MapperB"> <cache-ref namespace="com.jabnih.demo.mapper.MapperA"/> </mapper>
MapperC.xml
<mapper namespace="com.jabnih.demo.mapper.MapperC"> <cache /></mapper>
如下:
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。