如何使用 Web flux 和 JDBC 保存多条记录?

How to Save Multiple Records using Web flux and JDBC?

我正在尝试使用 spring boot - webflux(功能端点)和 jdbc 构建一个简单的 Web 应用程序。该应用程序接收 XML 格式的有效负载(这是 1 名员工的一些详细信息)。下面给出的代码按预期保留一名员工的数据。

public Mono<String> createData(final Mono<Record> inputMono) {
    final String someID = UUID.randomUUID().toString();

    final Mono<Integer> asyncUpdate = inputMono.flatMap(record -> {
        return beginUpdate(dataSource, 
  sqlStatementSharedAbove).withStatementEnricher(stmt -> {
            stmt.setString(1, record.getFirstName());
            stmt.setString(2, record.getLastName());
            stmt.setInt(3, record.getAddress());
        }).build();

    });
    return asyncUpdate.doOnSuccess(affectedRows -> LOGGER.debug("Added 
 {} rows with ID {}", affectedRows, someID))
        .map(affectedRows -> someID);
}

现在我需要为多个员工保存类似的数据(修改 XML 负载以包含多个员工记录)

在非 webflux 世界中,我将遍历员工对象列表并为每个对象调用此函数。

如何在 webflux 中实现相同的功能? 本质上,我希望使用 webflux 处理 saveAll 功能,并且考虑到我必须使用 JDBC(我确实理解 JDBC 不支持非阻塞范例,而 Mongo 支持 saveAll API 但我对可以使用的数据库有一定的限制,因此必须使用 JDBC)

谢谢。

以下代码用于保存多个员工记录。本质上,它需要一个 Flux(员工)才能与 -

一起工作

    public Mono<Void> createData(final Flux<Record> inputFlux) {

    return inputFlux.flatMap(record -> {
            return beginUpdate(dataSource, 
      sqlStatementSharedAbove).withStatementEnricher(stmt -> {
                stmt.setString(1, record.getFirstName());
                stmt.setString(2, record.getLastName());
                stmt.setInt(3, record.getAddress());
            }).build().doOnSuccess(affectedRows -> LOGGER.info("Added rows{}", affectedRows));

        }).then;
    }