SpringBoot关闭MyBatis一级缓存的方法
创始人
2024-03-27 13:28:15
0

原文网址:SpringBoot关闭MyBatis一级缓存的方法_IT利刃出鞘的博客-CSDN博客

简介

说明

        本文介绍SpringBoot关闭MyBatis一级缓存的方法。

备注

一级缓存只有在开启了数据库事物并且处于一个被事物标注的方法下【直接或间接】才会生效。

为什么要关闭MyBatis一级缓存

        默认情况下,MyBatis会开启一级缓存:对同样的查询将不再查询数据库,直接从缓存中获取。

        开启一级缓存存在的问题:如果不通过MyBatis修改数据,而是通过Navicat等工具,那么缓存中的数据不会被删除,导致MyBatis查到的还是以前的数据。

关闭MyBatis一级缓存的方法

        MyBatis没有提供一级缓存的启用、禁用开关,但在Mapper文件对应的语句中增加flushCache="true"可以达到实际禁用一级缓存的效果,一般同时还会加上useCache="false",以便关闭二级缓存。

下面讨论使用springboot配置的方式控制一级缓存。

MyBatis 一级缓存(MyBaits 称其为 Local Cache)无法关闭,但是有两种级别可选:

session

        在同一个 sqlSession 内,对同样的查询将不再查询数据库,直接从缓存中获取。

mybatis:configuration:cache-enabled: false  #禁用二级缓存local-cache-scope: session  #一级缓存指定为session级别

statement

        每次查询结束都会清掉一级缓存,实际效果就是禁用了一级缓存;

mybatis:configuration:cache-enabled: false #禁用二级缓存local-cache-scope: statement #一级缓存指定为statement级别

实测

@Transactional(propagation = Propagation.REQUIRED)
public List getUsers() {List usersList = usersMapper.selectByExample(new UsersExample());  //1usersList = usersMapper.selectByExample(new UsersExample());  //2return usersList;
}

A.一级缓存级别设置为session

        在代码中1处,通过日志观察,打印出sql语句,未走缓存【此时缓存数据还不存在】;

        在执行2处语句之前,通过数据库工具修改数据库记录并提交,继续执行程序后,通过日志观察,未打印出sql语句,获取的数据未体现出通过工具修改数据的变化,说明使用的是缓存中的数据;

B.一级缓存级别设置为statement

        在代码中1处,通过日志观察,打印出sql语句,未走缓存【此时缓存数据还不存在】;

        在执行2处语句之前,通过数据库工具修改数据库记录并提交,继续执行程序后,通过日志观察,打印出sql语句,且获取的数据也体现出通过工具修改数据的变化,说明未使用缓存中的数据;

结论:通过将一级缓存级别设置为statement,可以达到禁用一级缓存的效果。

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...