mybatis plus sql拦截器 导致的软删除失败

问题背景:
一,项目中使用了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);

Categories:

Tags:

No Responses

发表回复

您的电子邮箱地址不会被公开。