两个字段重复校验,一个字段可以为空

字段校验,现在有一个字段manangeCode已经可以校验重复,但是现在要添加assetCode字段重复校验,assetCode也可以为空字段,前后端该怎么写呢

img

img

后端直接处理,查询assetCode字段对应的数据是否存在进行重复校验,为空直接断言判断

不想动太多可以这么写

        final LambdaQueryWrapper<ToolCase> query;
        if (!StringUtils.isBlank(toolCase.getAssetCode())) {
            query = Wrappers.<ToolCase>query().lambda().eq(ToolCase::getManangeCode, toolCase.getManangeCode()).or(item -> item.eq(ToolCase::getAssetCode, toolCase.getAssetCode()));
        } else {
            query = Wrappers.<ToolCase>query().lambda().eq(ToolCase::getManangeCode, toolCase.getManangeCode());
        }
String assetCode = toolCase . getAssetCode();
if (!StringUtils.isBLank(manageCode)){//不为空的,在里面做判断重复
  //在这里面做判断重复
}

前端不需要处理,校验以往数据的重复后端才能做到。

有两步:

  1. 先校验assetCode是否为空
  2. 然后再去数据库查询assetCode的数据,查询时要屏蔽当前数据的id,以防未作修改时查询出当前数据
private void test(ToolCase toolCase) {
    String assetCode = toolCase.getAssetCode();
    if (null != assetCode) {
        Wrappers.<ToolCase>lambdaQuery()
                .eq(ToolCase::getAssetCode, assetCode)
                .ne(ToolCase::getId, toolCase.getId());
        if (this.count(queryWrapper) >  0) {
            throw new IllegalArgumentException("重复");
        }
    }
}

后端用一个校验框架吧,比如validation验证器,参考地址:https://blog.csdn.net/weixin_44566662/article/details/115622165