问题背景:
一,项目中使用了MybatisPlus 拦截器
@Bean
public ISqlInjector sqlInjector(){
return new LogicSqlInjector();
}
在执行逻辑删除时,使用了mybatisPlus的方法
EnumValue enumValue = enumValueManager.getById(enumValueDTO.getId());
if (Objects.isNull(enumValue)) {
throw new BusinessException("xxx");
}
enumValue.setIsDeleted(DelEnum.DELETED.getCode());
return enumValueManager.updateById(enumValue);
接口执行后,发现sql执行结果为
update set xx=xx where id = xx is_deleted = 1
预期sql应该是
update set xx=xx,is_deleted = 2 where id = xx is_deleted = 1
解决方案:
mybatisPlus提供了一个软删除解决方案
removeById()
enumValueManager.updateById(enumValue);
No Responses