问题:
我之前在写项目的时候,往往是在添加和修改时进行名称唯一性判断就完事了。忽略了修改名称时名称重复除了本身这一判断,后来反复测试时,发现了这一问题,于此记录,警示自己。
解决方法:
因为我是新增修改写在一起的,所以在修改判断时并不是直接查询名字相同且不是自己id的,而是通过名称去查对象,然后判断和原对象id是否一致,不一致就表示重复了。代码如下(代码一用于理解,代码二是优化去重后的)
代码一:
代码二:
Student it = studentService.selectByNo(s.getNo());
//新增 学号唯一性判断
if (s.getId() == null && it != null) {
return Result.failName();
} else if (s.getId() != null && it != null && s.getId().intValue() != it.getId().intValue()) {
return Result.failName();
}