java - 如何只添加一个数据?
问题描述
@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 方法上更新数据时,它会在我输入时更新数据。但其他数据变为空。有谁知道我该如何解决这个问题?
解决方案
在设置值之前进行空检查。
@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);
}
}
推荐阅读
- javascript - 切换到新组件
- javascript - 即使在调用 Await 之后,异步函数也会返回 Promise
- python - 如何在 Redshift 数据库上从 Python 触发更新 SQL
- security - 使用基本凭据提供程序配置 Elasticsearch REST 高级客户端
- oracle - 如何在oracle中查找点是否在多边形内?
- javascript - React Popup 未正确显示
- libreoffice-base - BASIC 运行时错误。参数不是可选的
- autohotkey - AutoHotKey Hot Strings 自动大写 I
- mysql - 在列中使用 CURRENT_TIMESTAMP 时的 Mysql 文件导入问题
- reactjs - react-tooltip,tooltip移动到下一个组件,给组件两个tooltip