目前使用的旧版本是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);
}
}
问题解决!