首页 > 解决方案 > 如何只添加一个数据?

问题描述

@PutMapping("/api/cricketer/{id}")
public ResponseEntity<Cricketer> updateCricketer(@PathVariable("id") Long id, @RequestBody Cricketer cricketer) {
    Cricketer cCricketer = cricketerService.findById(id);
    cCricketer.setCountry(cricketer.getCountry());
    cCricketer.setName(cricketer.getName());
    cCricketer.setHighestScore(cricketer.getHighestScore());
    cricketerRepository.save(cCricketer);
    return new ResponseEntity<Cricketer>(cricketer, HttpStatus.OK);
}

大家好。当我尝试在 updateCricketer 方法上更新数据时,它会在我输入时更新数据。但其他数据变为空。有谁知道我该如何解决这个问题?

标签: javarestput

解决方案


在设置值之前进行空检查。

@PutMapping("/api/cricketer/{id}")
public ResponseEntity<?> updateCricketer(@PathVariable("id") Long id, @RequestBody Cricketer cricketer) {
    Cricketer cCricketer = cricketerService.findById(id);
    if(Objects.nonNull(cCricketer)) {
        cCricketer.setCountry(Objects.isNull(cricketer.getCountry()) ? cCricketer.getCountry() : cricketer.getCountry());
        cCricketer.setName(Objects.isNull(cricketer.getName()) ? cCricketer.getName() : cricketer.getName());
        cCricketer.setHighestScore(Objects.isNull(cricketer.getHighestScore()) ? cCricketer.getHighestScore() : cricketer.getHighestScore());
        // Do same to the rest of the fields

        cricketerRepository.save(cCricketer);

        return new ResponseEntity<>(cricketer, HttpStatus.OK);
    } else {
        return new ResponseEntity<>("No cricketer Found!", HttpStatus.OK);
    }
}

推荐阅读