mybatis实现编辑时防重名校验

以下是新增时的防重名校验,如何实现编辑时的防重名校验(编辑时自身cd已经存在)


public RestfulResponse updateInnerById(BaseMetadata baseMetadata){

LambdaUpdateWrapper queryWrapper = Wrappers.lambdaUpdate();

queryWrapper.eq(BaseMetadata::getUserCd,baseMetadata.getUserCd()) ;
BaseMetadata cc = baseMapper.selectOne(queryWrapper);
//已经存在这样的用户cd了就不在添加
if(cc != null){
return RestfulResponse.failure("用户代码已存在");
}else{
updateById(baseMetadata);
return RestfulResponse.success("更新成功");}
}

你的编辑接口需要传id进来,你的对象不是有id嘛,你查到以后,对比一下id,id相同则放行

public RestfulResponse updateInnerById(BaseMetadata baseMetadata) {

    LambdaUpdateWrapper queryWrapper = Wrappers.lambdaUpdate();

    queryWrapper.eq(BaseMetadata::getUserCd, baseMetadata.getUserCd());
    BaseMetadata cc = baseMapper.selectOne(queryWrapper);
    // 已经存在这样的用户cd了就不在添加
    if (cc != null && !cc.getId().equals(baseMetadata.getId())) {
        return RestfulResponse.failure("用户代码已存在");
    } else {
        updateById(baseMetadata);
        return RestfulResponse.success("更新成功");
    }
}

上面老哥说的是对的
但是,有个更好的方案,就是你更新的时候,是要传某个参数的,你要校验重名,首先需要排除自己的,那么查询条件可以加上 where id!='xxxxxxx' 这个id就是你修改这条数据id,这样就排除校验自己了。