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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • socket传输中文出现乱码的解决[通俗易懂]

    socket传输中文出现乱码的解决[通俗易懂]socket传输中文出现乱码的解决 (2013-04-1114:57:03)转载▼ 分类: 技术知识socket服务端和客户端编码方式不一致将有可出现中文乱码问题,因此两边设成一样的就可以了socket服务端发送数据时设置编码方式PrintWriteroutput=newPrintWriter(new

    2022年7月8日
    214
  • c语言:位运算符「建议收藏」

    c语言:位运算符「建议收藏」简介位运算符用来对二进制位进行操作,Java中提供了如下表所示的位运算符:位运算符中,除~以外,其余均为二元运算符。操作数只能为整型和字符型数据。C语言中六种位运算符:&按位与|按位或^按位异或~取反>>右移<<左移运算方法按位与运算按位与运算符”&”是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。参与运算的数以补码方式出现。位运算.

    2022年10月4日
    2
  • SpringBoot AOP学习(二):Spring AOP实现日志功能

    SpringBoot AOP学习(二):Spring AOP实现日志功能SpringAOP实现日志功能代码示例

    2022年8月11日
    5
  • 【Java面试系列】SpringBoot面试题

    【Java面试系列】SpringBoot面试题目录1.SpringBoot面试题2.题目解析1、什么是SpringBoot?2、SpringBoot有哪些优点?3、什么是JavaConfig?4、如何重新加载SpringBoot上的更改,而无需重新启动服务器?5、SpringBoot中的监视器是什么?6、如何在SpringBoot中禁用Actuator端点安全性?7、如何在…

    2022年5月21日
    46
  • 【转载文章】windows批处理命令教程_____附加自己学习笔记

    【转载文章】windows批处理命令教程_____附加自己学习笔记https://www.jb51.net/article/41322.htm批处理文件是无格式的文本文件,它包含一条或多条命令。它的文件扩展名为.bat或.cmd。在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们。使用批处理文件(也被称为批处理程序或脚本),可以简化日常或重复性任务。当然我们的…

    2022年8月22日
    6
  • 加密芯片硬件协处理器

    加密芯片硬件协处理器通俗来讲,硬件协处理器是CPU内部用于处理特定算法或逻辑运算的硬件电路模块,我们可以把他理解为一个特殊的加速器。硬件协处理器可以用于减轻系统微处理器的特定处理任务负担。例如,数学协处理器可以控制数字处理;图形协处理器可以处理视频绘制。Intelpentium微处理器就包括内置的数学协处理器。一个协处理器通过扩展指令集或提供配置寄存器来扩展内核处理功能。一个或多个协处理器可以通过协处理器接口与CPU内核相连。协处理器可以通过一组专门的、提供的接口的CPU指令来访问。对于加密芯片行业

    2022年6月25日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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