gpt4 book ai didi

java - 使用 Spring Data R2DBC 查找/修改/保存或更新插入

转载 作者:行者123 更新时间:2023-12-02 02:56:35 24 4
gpt4 key购买 nike

我正在努力研究响应式编程,特别是 Spring 和 Spring Data R2DBC。可以帮助我更好地理解它的一件事是进行查找/修改/保存或一个对象的“upsert”。传统的交互可能如下所示:

Book save(Book book) {

Book existing = repository.findByIsbn(book.getIsbn())

if (existing != null) {
return repository.save(found.copyMutableValuesFrom(book));
}

return repository.save(book);
}

用 Monos 会怎样?我了解如何直接查找或直接保存,但我无法进行更复杂的查找/更新/保存或更新插入。

谢谢。

最佳答案

根据您的要求,它或多或少会像这样。

@Transactional
Mono<Book> save(Book book){
return repository.findByIsbn(book.getIsbn())
.flatMap(found -> repository.save(found.copyMutableValuesFrom(book)))
.switchIfEmpty(repository.save(book));
}
  1. ReactiveCrudRepository 返回 Mono<Book>当你调用 findById(类似于 Optional<Book> - 如果它是你的自定义方法,让它返回 Mono<Book> )
  2. 如果这本书存在,则在我们更新现有书的地方执行第二条语句
  3. 如果找不到这本书,则在我们保存新书的地方执行第 3 条语句。

它返回一个 Mono<Book>

关于java - 使用 Spring Data R2DBC 查找/修改/保存或更新插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61004958/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com