zoukankan      html  css  js  c++  java
  • 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的缓存。

  • 相关阅读:
    Component 组件props 属性设置
    template 模版制作
    vue生命周期钩子函数
    Vue.set 全局操作 结构器外面修改数据
    Vue.extend 构造器的延伸
    vue.directive自定义指令
    实战笔记
    实战-第二讲 Vue-cli搭建开发环境
    实战-第一讲 画设计图
    webpack-第03节:配置文件:入口和出口
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/use-cache-in-mybatis.html
Copyright © 2011-2022 走看看