springboot mybatis缓存_secure boot未正确配置

springboot mybatis缓存_secure boot未正确配置什么是缓存?简单来讲,缓存就是存储在缓冲区里的内容,或者可以理解为存在内存中的内容。用户可以将经常查询的内容放到缓存中,再次使用时直接从缓存中取值,而不需要再查询数据库。这样做的优点是响应迅速,减少了系统资源(网络资源、CPU资源等)开销;缺点是需要占用内存资源,服务器一旦关机,缓存就会丢失,重启后需要重新将写一遍数据到内存。Mybatis的缓存Mybatis的缓存分为一级缓存和二级缓存。一级缓存是默认开启的,二级缓存需要手动开启。一级缓存是SqlSession级别的缓存,作用域是一个SqlSess

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

什么是缓存?

简单来讲,缓存就是存储在缓冲区里的内容,或者可以理解为存在内存中的内容。用户可以将经常查询的内容放到缓存中,再次使用时直接从缓存中取值,而不需要再查询数据库。这样做的优点是响应迅速,减少了系统资源(网络资源、CPU资源等)开销;缺点是需要占用内存资源,服务器一旦关机,缓存就会丢失,重启后需要重新将写一遍数据到内存。

Mybatis的缓存
Mybatis的缓存分为一级缓存和二级缓存。一级缓存是默认开启的,二级缓存需要手动开启。

一级缓存是SqlSession级别的缓存,作用域是一个SqlSession。在同一个SqlSession中,执行相同的查询sql,第一次会先去查询数据库,并写入缓存。第二次再执行时,则直接从缓存中取数据。如果两次执行查询sql的中间执行了增删改操作,则会清空该SqlSession的缓存。

二级缓存是mapper级别的缓存。作用域是是mapper的同一个namespace下的sql语句。第一次执行查询SQL时,会将查询结果存到二级缓存区域内。第二次执行相同的查询SQL,则直接从缓存中取出数据。如果两次执行查询sql的中间执行了增删改操作,则会清空该namespace下的二级缓存。

1、开启二级缓存

(1) 修改resources目录下的application.properties配置文件,加入开启mybatis二级缓存的配置和打印执行sql的配置

# 开启mybatis的二级缓存
mybatis.configuration.cache-enabled=true

# 开启sql打印
logging.level.com.batis.mapper=debug

(2) 修改resources目录下mapping目录对应的Mapper文件

<!-- 开启二级缓存 -->
<cache eviction="LRU" flushInterval="100000" readOnly="true" size="1024">
</cache>

说明:
eviction: 回收策略
LRU 最近最少使用的,移除最长时间不被使用的对象,这是默认值
FIFO 先进先出,按对象进入缓存的顺序来移除它们
SOFT 软引用,移除基于垃圾回收器状态和软引用规则的对象
WEAK 弱引用,更积极的移除基于垃圾收集器状态和弱引用规则的对象

flushInterval: 刷新间隔,以毫秒为单位,100000表示每100秒刷新一次缓存。不设置的话,则每次调用语句时刷新。

readOnly: 只读属性可以被设置为true后者false。只读的缓存会给所有调用者返回缓存对象的相同实例,因此这些对象不能被修改,这提供了很重要的性能优势。可读写的缓存会通过序列化返回缓存对象的拷贝,这种方式会慢一些,但很安全,因此默认为false。

size: 可以被设置为任意的正整数,要记住缓存的对象数目和运行环境的可用内存资源数目,默认1024。

(3) 实体对象要implements Serializable,否则报错

public class User implements Serializable{ 
   

}

(4) 启动工程,如果出现

Cache Hit Ratio . #表示缓存开启了.....

2、启动batis项目并使用postman工具进行测试
查询用户:
在这里插入图片描述

打印sql日志,可以看到详细的查询过程(红框),第一次查询时调用了查询语句,后面绿框中的是多次查询,没有调用查询语句,而是直接取缓存的值;100秒之后再进行第二次查询,又重新调用了查询语句,并且多次查询后是从缓存取出值。:

插入用户并执行查询:
在这里插入图片描述

从上图的执行结果可以看到,先进行查询操作,查询结果更新到缓存,后面的几次查询都是直接从缓存取值。之后执行一个插入用户的操作,再多次执行查询操作的时候,会先调用一次查询语句将查询结果写入缓存,后面的几次操作就会直接从缓存取值。

至此Springboot集成Mybatis的二级缓存内容已经全部讲完,测试也都完全符合预期!
有可以改进的地方希望诸位同学不要吝惜笔墨,加以指正,万分感谢!

参考文章链接:https://blog.csdn.net/huanongying123/article/details/104293908

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

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

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


相关推荐

  • hdu 4063 Aircraft 计算几何+最短路

    hdu 4063 Aircraft 计算几何+最短路

    2022年1月19日
    43
  • java 重写和重载的区别[通俗易懂]

    java 重写和重载的区别[通俗易懂]classAnimal{ privateStringname; privateStringsex; privateintage; publicAnimal(){ //TODOAuto-generatedconstructorstub } publicvoidmove() { System.out.println("animalmove…

    2022年9月9日
    0
  • 一眼看懂map和flatmap的区别

    一眼看懂map和flatmap的区别map的作用很容易理解就是对rdd之中的元素进行逐一进行函数操作映射为另外一个rdd。flatMap的操作是将函数应用于rdd之中的每一个元素,将返回的迭代器的所有内容构成新的rdd。通常用来切分单词。Spark中map函数会对每一条输入进行指定的操作,然后为每一条输入返回一个对象;而flatMap函数则是两个操作的集合——正是“先映射后扁平化”:操作1:同map函数一样:对每一条输入进…

    2022年5月4日
    57
  • mac idea2022.01 激活【最新永久激活】

    (mac idea2022.01 激活)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~747EFQ8BIF-eyJsaWNlbnNlSWQiOi…

    2022年3月31日
    350
  • centOS7 安装nginx并启动

    centOS7 安装nginx并启动 一、下载安装包  cd/usr/local/software (software可能没有,用mkdir创建或者只到local目录下也行)  wgethttp://nginx.org/download/nginx-1.6.2.tar.gz  (选择一个比较稳定的版本下载即可,或者手动下载后,用xshell传到该目录下也行) 二、解压安装  tar-zx…

    2022年5月7日
    163
  • 安卓系统能读ntfs文件吗(Android Pie)

    AndroidP支持NTFS读取KernelConfigCONFIG_NTFS_FSCONFIG_NTFS_RW(只能针对已存在文件进行写操作)CONFIG_NLSCONFIG_NLS_UTF8(用于支持中文格式)vold修改文件:fs文件夹追加Ntfs.cpp和Ntfs.h,可以以Exfat.cpp为模板。差异点:fs/Ntfs.cpp①IsSupported直接returnIsFileSystemSupported(“ntfs”)。②Check函数直接返回0。③Mount函

    2022年4月14日
    397

发表回复

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

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