@Override saveOrEdit() 方法错误及修正 - Java代码优化
@Override saveOrEdit() 方法错误及修正 - Java代码优化
问题:
这段代码用于保存或更新图书类型,存在以下逻辑错误:
- 如果传入的
bookType的id为空,则会一直执行return this.updateById(bookType),不会进行保存操作; - 在遍历比较时,如果传入的
bookType的id不为空,那么只要存在与之相同的图书分类名称,就会直接抛出异常,不会进行更新或保存操作。
原始代码:
@Override
public boolean saveOrEdit(TrainBookType bookType) {
//先拿到所有的图书分类
List<TrainBookType> list = this.list();
//遍历比较
for (TrainBookType trainBookType : list) {
String ExistingBook = trainBookType.getBookName();
//当前图书分类名称
String bookName = bookType.getBookName();
if (Str.isNotEmpty(bookType.getId())) {
if (bookName.equals(ExistingBook)) {
throw new BsException('图书类型' + bookName + '已经存在');
}
return this.save(bookType);
}
}
return this.updateById(bookType);
}
正确代码:
@Override
public boolean saveOrEdit(TrainBookType bookType) {
List<TrainBookType> list = this.list();
for (TrainBookType trainBookType : list) {
String existingBook = trainBookType.getBookName();
String bookName = bookType.getBookName();
if (bookName.equals(existingBook) && !bookType.getId().equals(trainBookType.getId())) {
throw new BsException('图书类型' + bookName + '已经存在');
}
}
if (Str.isNotEmpty(bookType.getId())) {
return this.updateById(bookType);
} else {
return this.save(bookType);
}
}
改动说明:
- 在遍历比较时,判断是否存在与之相同的图书分类名称时,需要同时判断当前图书分类和已存在的分类是否是同一个,即判断
id是否相等; - 判断是否进行更新或保存的操作时,需要根据传入的
bookType的id是否为空来确定。
总结:
经过修正后的代码能够正确处理图书类型的保存和更新操作,避免了之前代码中的逻辑错误。建议在进行代码开发时,注意逻辑的完整性和正确性,避免出现类似的错误。
原文地址: https://www.cveoy.top/t/topic/mGDf 著作权归作者所有。请勿转载和采集!