@Override saveOrEdit() 方法错误及修正 - Java代码优化

问题:

这段代码用于保存或更新图书类型,存在以下逻辑错误:

  1. 如果传入的 bookTypeid 为空,则会一直执行 return this.updateById(bookType),不会进行保存操作;
  2. 在遍历比较时,如果传入的 bookTypeid 不为空,那么只要存在与之相同的图书分类名称,就会直接抛出异常,不会进行更新或保存操作。

原始代码:

@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);
    }
}

改动说明:

  1. 在遍历比较时,判断是否存在与之相同的图书分类名称时,需要同时判断当前图书分类和已存在的分类是否是同一个,即判断 id 是否相等;
  2. 判断是否进行更新或保存的操作时,需要根据传入的 bookTypeid 是否为空来确定。

总结:

经过修正后的代码能够正确处理图书类型的保存和更新操作,避免了之前代码中的逻辑错误。建议在进行代码开发时,注意逻辑的完整性和正确性,避免出现类似的错误。

@Override saveOrEdit() 方法错误及修正 - Java代码优化

原文地址: https://www.cveoy.top/t/topic/mGDf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录