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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • unittest测试框架组成_unittest接口自动化

    unittest测试框架组成_unittest接口自动化一、unittest简介unittest是python的单元测试框架。unittest单元测试提供了创建测试用例,测试套件以及批量执行的方案,unittest在安装pyhton以后就直接自带了,直接importunittest就可以使用。作为单元测试的框架,unittest也是可以对程序最小模块的一种敏捷化的测试。在自动化测试中,我们虽然不需要做白盒测试,但是必须需要知道所使用语言的单元测试框架。利用单元测试框架,创建一个类,该类继承unittest的TestCase,这样可以把每

    2022年10月14日
    2
  • Visual Studio 2017 – Windows应用程序打包成exe文件(2)- Advanced Installer 关于Newtonsoft.Json,LINQ to JSON的一个小d…

    Visual Studio 2017 – Windows应用程序打包成exe文件(2)- Advanced Installer 关于Newtonsoft.Json,LINQ to JSON的一个小d…

    2021年6月9日
    174
  • python3.7安装pycrypto

    python3.7安装pycrypto首先直接打开 cmd 注意不是打开 python 也不用切换到 python 命令行直接输入 pip3installp 我这里安装过了 所以提示我已经安装过 如果未安装则提示安装成功然后找到你的 python 包的安装目录 也就是上面我们提示的 c users 杨 appdata local programs python python37 lib sit

    2025年6月16日
    3
  • 服务器ssh免密钥登陆(vscode远程连接服务器)

    VScode实现远程查看代码要使用一些插件,我用的是Remote-SSH,安装很简单,推荐看下下面的博客,写的很详细:https://blog.csdn.net/u010417914/article/details/96918562重要的是遇到的一些问题:1.我的服务器用的是Ubuntu18.04,生成rsa公钥和私钥后,注意要以附加到文件尾部的方式把公钥拷贝到…

    2022年4月14日
    55
  • intellij idea 2021激活码_在线激活

    (intellij idea 2021激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月28日
    40
  • 深度学习 arm linux移植过程整理[通俗易懂]

    深度学习 arm linux移植过程整理[通俗易懂]一、环境搭建下载虚拟机VMwareWorkstation自行下载激活成功教程下载ubtun因运行环境使用ubtun18所虚拟机下载的ubtun18下载比较慢的话可以更换国内镜像https://cn.ubuntu.com/download/server/step1vm中安装ubtun虚拟机https://zhuanlan.zhihu.com/p/141033713下载支持包编译服务器需要安装包makecmake交叉编译链arm-linux-gunebhf例如:ap

    2022年9月24日
    1

发表回复

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

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