继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

mybatis 3.x 缓存Cache的使用

一只萌萌小番薯
关注TA
已关注
手记 221
粉丝 11
获赞 54

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的缓存。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP