@(MyBatis)[Cache]

MyBatis Cache配置

MyBatis提供了一级缓存和二级缓存

配置

全局配置

配置 说明 默认值 可选值
cacheEnabled 全局缓存的开关 true true false
localCacheScope 本地缓存,SESSION表示执行的sql结果缓存数据可以在同一个sqlSession共享,
而STATEMENT,则同只有在单条语句会被缓存,
两条语句不能共享缓存数据
SESSION SESSION STATEMENT
    <!-- 默认值 -->
<setting name="cacheEnabled" value="true"/>
<setting name="cacheEnabled" value="SESSION"/>

Mapper配置

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=""/>

cache配置

属性 说明 默认值 可选值
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>

如下:

MyBatis Cache配置的更多相关文章

  1. Mybatis XML配置

    Mybatis常用带有禁用缓存的XML配置 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE ...

  2. MyBatis 实践 -配置

    MyBatis 实践 标签: Java与存储 Configuration mybatis-configuration.xml是MyBatis的全局配置文件(文件名任意),其配置内容和顺序如下: pro ...

  3. SpringMVC+Mybatis+MySQL配置Redis缓存

    SpringMVC+Mybatis+MySQL配置Redis缓存 1.准备环境: SpringMVC:spring-framework-4.3.5.RELEASE-dist Mybatis:3.4.2 ...

  4. SmartSql = Dapper + MyBatis + Cache(Memory | Redis) + ZooKeeper + R/W Splitting + ......

    SmartSql Why 拥抱 跨平台 DotNet Core,是时候了. 高性能.高生产力,超轻量级的ORM.156kb (Dapper:168kb) So SmartSql TargetFrame ...

  5. [教程] Spring+Mybatis环境配置多数据源

    一.简要概述 在做项目的时候遇到需要从两个数据源获取数据,项目使用的Spring + Mybatis环境,看到网上有一些关于多数据源的配置,自己也整理学习一下,然后自动切换实现从不同的数据源获取数据功 ...

  6. Mybatis Cache 缓存策略

    Mybatis Cache 缓存策略 正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持 一级缓存: 基于PerpetualCache 的 HashMap本地缓存,其存储作用 ...

  7. Java-MyBatis:MyBatis 3 配置

    ylbtech-Java-MyBatis:MyBatis 3 配置 1.返回顶部 1. XML 映射配置文件 MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置(settings) ...

  8. MyBatis 核心配置综述之Executor

    目录 MyBatis四大组件之 Executor执行器 Executor的继承结构 Executor创建过程以及源码分析 Executor接口的主要方法 Executor 的现实抽象 上一篇我们对Sq ...

  9. Mybatis XML配置(转载)

    原文地址:https://www.w3cschool.cn/mybatis/f4uw1ilx.html Mapper XML 文件 MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它 ...

随机推荐

  1. pc端与移动端的区别

    移动设备和PC本身有区别: 1.屏幕尺寸不同,屏幕大小导致显示的内容页不一样. 2.网络速度不同:手机分2G.3G.4G.WIFI等,我们要少用图片,JS.动画等等,用户打不开一样起不了作用. 3.使 ...

  2. httpClient实现微信公众号消息群发

    1.实现功能 向关注了微信公众号的微信用户群发消息.(可以是所有的用户,也可以是提供了微信openid的微信用户集合) 2.基本步骤 前提: 已经有认证的公众号或者测试公众账号 发送消息步骤: 发送一 ...

  3. Centos7 关闭防火墙

    CentOS 7.0默认使用的是firewall作为防火墙,使用iptables必须重新设置一下 1.直接关闭防火墙 systemctl stop firewalld.service #停止firew ...

  4. Linux下的C Socket编程 -- 获取对方IP地址

    Linux下的C Socket编程(二) 获取域名对应的IP地址 经过上面的讨论,如果我们想要连接到远程的服务器,我们需要知道对方的IP地址,系统函数gethostbyname便能够实现这个目的.它能 ...

  5. centos系统编译安装nginx+php环境另加独立mysql教程

    以前看过的安装nginx+php环境都带了mysql数据库了,这个是因为很多站长都是nginx+php+mysql都在同一台服务器了,那么今天我们是单独处理了,一个是nginx+php环境,然后mys ...

  6. 5sing分析

    0x1.抓包数据:用fiddler抓取不到,用smartsniff [6/26/星期日 18:05:04:391]GET /user/login?username=15081515272&pa ...

  7. asp.net mvc 绑定客户端post过来的复杂JSON数据

    客户端代码如下: <input type="button" id="btnTest" value="测试" /><br / ...

  8. PHP执行文档操作

    1.POWINTPOINT系列 之前参与过一个商城的项目,里面有将excel 导出的功能,但是如果要弄成PPT的我们应该怎么办呢?PHP是属于服务器端的 总不能在里面装个Powintpoint吧.于是 ...

  9. Java学习笔记(一)

    纯属个人学习笔记,有什么不足之处大家留言,谢谢 Java程序打包与JAR运行方法 在Eclipse的"包资源管理器"视图中找到要打包成JAR文件的项目.在项目名称上单击鼠标右键,在 ...

  10. 【hrbust2294】修建传送门

    题意 哈理工2016级新生程序设计全国邀请赛B题 n个点1~n,i到i+1的距离为a[i],现在可以在两个点之间建一个传送门,则两点之间距离为0,求建传送门后1号出发的最远距离最小是多少? 题解 a[ ...