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

  • 相关阅读:
    浏览器版本过低
    虚拟PWN初探
    elasticsearch常用查询
    python安装pip模块
    spark-kafka-es交互 优化
    scala写文件
    python unittest
    scala collection(集合)
    spark-kafka-es交互
    scala语法
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/use-cache-in-mybatis.html
Copyright © 2020-2023  润新知