[英]Find/Modify/Save or Upsert with Spring Data R2DBC
我试图围绕反应式编程,特别是 Spring 和 Spring Data R2DBC。 可以帮助我更好地理解它的一件事是对 object 进行查找/修改/保存或“更新插入”。 传统的交互可能如下所示:
Book save(Book book) {
Book existing = repository.findByIsbn(book.getIsbn())
if (existing != null) {
return repository.save(found.copyMutableValuesFrom(book));
}
return repository.save(book);
}
Monos 看起来如何? 我了解如何进行直接查找或直接保存,但更复杂的查找/更新/保存或 upsert 让我望而却步。
谢谢。
根据您的要求,它或多或少会像这样。
@Transactional
Mono<Book> save(Book book){
return repository.findByIsbn(book.getIsbn())
.flatMap(found -> repository.save(found.copyMutableValuesFrom(book)))
.switchIfEmpty(repository.save(book));
}
Mono<Book>
(类似于Optional<Book>
- 如果它是您的自定义方法,则使其返回Mono<Book>
) 它返回一个Mono<Book>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.