针对这个,大部分项目都可以适用下面这个套路:
- 废话不多说,直接上代码
/**
* 校验参数名称是否重复
*
* @param dtoParameter 前端传来的实体类
*/
public void checkSaveParameters(DtoParameter dtoParameter) {
// 校验参数名称
EntityWrapper<tb_business_parameterinfo> wrapper = new EntityWrapper<>();
wrapper.eq("deleted", false);
wrapper.eq("name", dtoParameter.getName()); // 组装的条件
if (!ObjectUtils.isEmpty(dtoParameter.getId())) {
wrapper.ne("id",dtoParameter.getId());
}
tb_business_parameterinfo parameterinfo = super.selectOne(wrapper);
if (!ObjectUtils.isEmpty(parameterinfo)) {
throw new RuntimeException("该名称已存在,请重新填写!!");
}
}
这段代码的意思就是:
- 如果是编辑,就判断name等于前端传过来的name,并且id不等于本条的id的数据在数据库中有没有,如果有则证明已存在,若是没有,则可以编辑。
- 如果是新建,就不判断id 只组装其他的条件,如果有则证明已存在,若是没有,则可以编辑。
注:为什么新建不需要组装id,因为新建没有id所以要给他排除 就是你不给她写上if (!ObjectUtils.isEmpty(dtoParameter.getId())) {}
这个判断,他会将id赋值成null,这样查出来就不准了,所以切记,一定要将这个id给分开,来判断新建还是编辑。