MyBatis关闭一级缓存的两种方式(分注解和xml两种方式)

作者:刘大猫. 时间:2023-09-02 10:18:59 

问题:为什么有缓存

mybatis默认开启一级缓存

什么场景下必须需要关闭一级缓存

场景:执行2次相同sql,但是第一次查询sql结果会加工处理,比如解析铭文,或者反编译加密解密用户名/密码字符串等等,如果不关闭一级缓存,等第二次再查询相同sql时不会去数据库表重新查询,而是直接使用缓存,从而导致后面拿到的不是原始数据而处理出错

关闭一级缓存方法(针对使用MyBatis场景)

第一种:xml形式(关闭所有一级缓存)

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

第二种:注解形式(可指定仅仅某个Mapper关闭注解)

@Options(flushCache = Options.FlushCachePolicy.TRUE)
@Select("select * from ge_jdbc_datasource where id = #{id,jdbcType=BIGINT} and status = 1")
@ResultMap("resultMap")
JdbcDataSource find(Long id);

第三种:sql动态拼接传入的随机数

比如sql传参random()数值 或者 sql传入当前时间毫秒数,切记一定要从方法形参传过去而不要在sql中拼写,否则无效

举例说明:下面方式无效

select id from ge_jdbc_datasource where id = 1 and STATUS = 1 AND NOW()=NOW()

来源:https://blog.csdn.net/a924382407/article/details/117962353

标签:MyBatis,关闭,缓存
0
投稿

猜你喜欢

  • Android 实现永久保存数据的方法详解

    2023-06-23 22:13:23
  • 解决使用IDEA时跳转到.class的问题

    2022-07-12 20:46:37
  • java按字节截取带有汉字的字符串的解法(推荐)

    2022-10-08 23:49:49
  • Spring Cloud 使用 Resilience4j 实现服务熔断的方法

    2021-11-09 12:36:10
  • SpringBoot @PostConstruct原理用法解析

    2022-02-02 18:05:46
  • OpenCV画任意圆弧曲线

    2023-06-22 19:28:44
  • C#中POST接口formdata传参模板的记录

    2022-03-30 01:58:50
  • SpringBoot整合Kafka工具类的详细代码

    2022-07-03 14:12:13
  • 百度地图API提示230 错误app scode码校验失败的解决办法

    2022-02-17 11:48:10
  • Android string.xml中的替换方法

    2021-11-10 11:47:56
  • maven创建spark项目的pom.xml文件配置demo

    2023-11-02 01:14:02
  • Android 自定义ProgressDialog进度条对话框用法详解

    2022-02-14 19:31:04
  • java字节码框架ASM的深入学习

    2023-11-29 05:51:19
  • 图文详解Java中的序列化机制

    2021-06-15 12:11:49
  • android自定义View实现简单五子棋游戏

    2022-09-16 14:52:30
  • Java 类加载机制详细介绍

    2023-12-19 13:55:59
  • Android之利用EventBus发送消息传递示例

    2022-11-02 08:25:21
  • springboot+spring data jpa实现新增及批量新增方式

    2023-01-27 03:45:53
  • Android 自定义View之边缘凹凸的优惠券效果的开发过程

    2021-12-30 07:25:10
  • c#中LINQ的基本用法(三)

    2022-11-29 11:06:31
  • asp之家 软件编程 m.aspxhome.com