我想实现Spring端点来从数据库获取数据。
@GetMapping("/notification/{id}")
public ResponseEntity<?> getNotificationByTransactionId(@PathVariable Integer id) {
return notificationService
.findByTransactionId(id)
.map(g -> NotificationNewDTO.builder()
.id(g.getId())
.status(g.getStatus())
.updated_at(g.getUpdated_at())
.build()
)
.map(ResponseEntity::ok)
.orElseGet(() -> notFound().build());
}
如果发现数据库中有注释,是否有某种方法可以只返回空的NotificationNewDTO
对象?
答案 0 :(得分:1)
我将分两步进行操作:计算DTO(检索的或默认的)并返回DTO。
它使事情更具可读性。
提取Optional<NotificationNewDTO>
并在dto上调用ResponseEntity.ok()
时提供默认值:
NotificationNewDTO dto =
notificationService
.findByTransactionId(id)
.map(g -> NotificationNewDTO.builder() // Optional<NotificationNewDTO>
.id(g.getId())
.status(g.getStatus())
.updated_at(g.getUpdated_at())
.build()
)
.orElse(NotificationNewDTO.ofDefaultValue()); // change here
return ResponseEntity.ok(dto); // change here
当然可以一次完成它,但是不清楚:
return
ResponseEntity.ok(
notificationService
.findByTransactionId(id)
.map(g -> NotificationNewDTO.builder()
.id(g.getId())
.status(g.getStatus())
.updated_at(g.getUpdated_at())
.build()
)
.orElse(NotificationNewDTO.ofDefaultValue())
)