jeecg boot MybatisInterceptor 的使用笔记

本文解决了Mybatis在更新记录时遇到的问题,即在尝试更新旧版本数据时因默认设置为当前时间而导致无法找到目标记录的情况。通过调整MybatisInterceptor中的逻辑,确保了只有当updateTime为空时才设置为当前时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目前使用的旧版本是2.0.2

更新了新版本2.2.1

sql:

UPDATE tablename 
set update_time = #{updateTimeNew} 
where ID = #{id} and update_time = #{updateTime}

使用中存在问题:

首先查到了最新数据,然后执行以上sql,由于updateTime在最新版中被默认了new Date() 导致查不到旧数据

版本2.2.1代码片段:

MybatisInterceptor.java
if ("updateTime".equals(field.getName())) {
   //del by wtf 20210519 删除有问题代码,如果使用updateTime 来判断只更新最新数据,会导致传到sql的updateTime是最新时间,而不是上一个版本数据的事件
   field.setAccessible(true);
   field.set(parameter, new Date());
   field.setAccessible(false);
}

此部分还原回旧版本2.0.2代码片段:

MybatisInterceptor.java
if ("updateTime".equals(field.getName())) {
   field.setAccessible(true);
   Object local_updateDate = field.get(parameter);
   field.setAccessible(false);
   if (local_updateDate == null || local_updateDate.equals("")) {
      field.setAccessible(true);
      field.set(parameter, new Date());
      field.setAccessible(false);
   }
}

 

问题解决!

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值