mybatis缓存配置

mybatis缓存配置mybatis的缓存有三种方式:1、一级缓存(基于SqlSession会话级别的;2、二级缓存(基于nameSpace级别的,范围比以及缓存更广);3、第三方缓存;mybatis缓存使示意图:一、一级缓存说明:其中一级缓存是mybatis默认使用的缓存,无需手动配置,二级缓存需要手动配置;一级缓存失效条件1)sqlSession不同,由于一级缓存是基于sqlSession级别的,所以当使用不同sq…

大家好,又见面了,我是你们的朋友全栈君。mybatis的缓存有三种方式:


1、一级缓存(基于SqlSession会话级别的;
2、二级缓存(基于nameSpace级别的,范围比以及缓存更广);

3、第三方缓存;

mybatis缓存使示意图:

mybatis缓存配置


一、一级缓存说明:

其中一级缓存是mybatis默认使用的缓存,无需手动配置,二级缓存需要手动配置;

一级缓存失效条件

1)sqlSession不同,由于一级缓存是基于sqlSession级别的,所以当使用不同sqlSession进行查询时缓存也不同;

2)sqlSession相同,手动清空一级缓存;

3)sqlSession相同,两次查询之间执行了增删改操作;

4)sqlSession相同,查询条件不同;

二、二级缓存相关配置:

步骤如下:

1)、开启缓存

在mybatis配置文件中设置启用缓存

 <settings>
    <setting name="cacheEnabled" value="true"/>
 </settings>

2)、使用缓存

在各个XXmapper.xml配置文件中加上

<cache eviction="FIFO"  flushInterval="10800000"  size="512" readOnly="true" /> 

属性说明:

mybatis缓存配置

3)、相关的实体类bean对象需要实现序列号接口Serializable

通过以上配置mybatis二级缓存配置完成!


三、mybatis缓存相关属性设置:

在XXmapper.xml配置文件的各个增删改查节点中可以设置以下属性控制缓存;

useCache:默认为true,当设置false时,则不使用二级缓存(对一级缓存没有影响);

flushCache:在增删改标签中默认为true,即:进行增删改之后会自动清除一级、二级缓存内容;

localCacheScpoe:本地缓存作用域,默认为SESSION即开启一级缓存,当设置为STATEMENT时则关闭一级缓存;

说明:


在一级缓存和二级缓存同时存在的情况下,查询出来的数据都会自动放到一级缓存中,只有当一级缓存提交或者关闭之后,数据才会转移到二级缓存中,也就是说这个时候才能从二级缓存中取到数据,
数据查询的时候会先查询二级缓存,再查询一级缓存,最后查询数据库;


四、第三方缓存配置:

Mybatis自身的缓存其实是很简陋的,其顶层接口为Cache,查看其具体实现,底层其实就是个Map数据结构而已,因此可以集成第三方缓存接口相关接口,进行数据缓存操作;

比如集成Ehcache,其实也就是实现了Cache接口,


mybatis缓存配置

具体配置如下:

1)、基础配置ehcache.xml(省略说明…)

2)、其它xml配置如下;

mybatis缓存配置

最后:

如果需要在命名空间中共享相同的缓存配置和实例,在这样的情况下你可以使用 cache-ref 元素来引用另外一个已经配置好的缓存。

即:在其他XXmapper.xml中配置缓存的引用,

如下:

<cache-ref namespace="com.x.x.x.XXXMapper"/>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/143373.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • SCI论文投稿信(Cover Letter)的写法及模版

    SCI论文投稿信(Cover Letter)的写法及模版一、写法投稿信(CoverLetter)应该简述所投稿件的核心内容、主要发现和意义,拟投期刊,对稿件处理有无特殊要求等(如“nottoreview”list)。另外,请附上主要作者的中文姓名、通讯地址、电话、传真和e-mail地址。此外有的杂志要求推荐几位审稿人及其联系方式。以及谁已经阅读过该文(当然是牛人)。一般来说,杂志通常要求说明你论文研究的意义,以及与这个杂志的相关性,另外还有…

  • 创建和使用逐帧动画

    创建和使用逐帧动画

  • STM32F103驱动无刷直流电机应用思路「建议收藏」

    STM32F103驱动无刷直流电机应用思路「建议收藏」一、STM32F103驱动无刷直流电机基本思路无刷电机控制是基于6步换相法如下图所示:二、STM32F103驱动无刷直流电机方法介绍通常我们用的方法是使用高级定时器3通道互补输出去驱动mos管,用通用定时器连接霍尔传感器去触发中断,在中断中换相,基本原理如下图所示:三、驱动代码编写/***********************************************************************Description:None*Input

  • 光纤通信视频_光纤传输的信号属于什么

    光纤通信视频_光纤传输的信号属于什么目前,光纤在生产和施工方面较于以前有了很大的提升,价格也降低了很多。再加上光纤的传输质量,光纤无疑将成为发展较快的传输模式。马上为您全面剖析光纤传输技术。  光纤通信的原理:在发送端首先要把传送的信息(如视频)变成电信号,然后调制到激光器发出的激光束上,使光的强度随电信号的幅度(频率)变化而变化,并通过光纤发送出去;在接收端,检测器收到光信号后把它变换成电信号,经解调后恢复原信息。  光纤监…

  • idea替换_idea替换字符串的快捷键

    idea替换_idea替换字符串的快捷键idea全局查找通过快捷键Ctrl+Shift+f快速进入全局查找页面,或者通过Edit—Find—ReplaceInPath

  • Java线程池参数分析「建议收藏」

    Java线程池参数分析「建议收藏」线程池组成创建线程池创建线程池通过Executors的工厂方法来创建线程池实例。实际上Executors创建的线程池实例最终都是通过实例化配置不同参数的ThreadPoolExecutor对象。 publicstaticExecutorServicenewFixedThreadPool(intnThreads){returnnewThreadPoolEx…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号