如何使用R2DBC-DatabaseClient实现saveAll?

问题描述

如何使用saveAll实现类似ReactiveCrudRepository的{​​{1}}方法

那是我的实现-很遗憾,它不起作用。

DatabaseClient

解决方法

使用Statement.add方法绑定多个参数。

this post中查看我的示例。

,
@Autowired
private DatabaseClient databaseClient;

public Mono<Integer> saveAll(List<Book> books) {
    var query = new StringBuilder("INSERT INTO book(title,author) VALUES ");
    var bookIterator = books.iterator();
    while(bookIterator.hasNext()) {
        var book = bookIterator.next();
        query.append(String.format("('%s','%s')",book.getTitle(),book.getAuthor()));
        if(bookIterator.hasNext()) {
            query.append(",");
        }
    }
    return databaseClient.execute(query.toString()).fetch().rowsUpdated();
}