Как сохранить несколько записей, используя Web Flux и JDB C? - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь создать простое веб-приложение с использованием весенней загрузки - webflux (функциональные конечные точки) & jdb c. Приложение получает полезную нагрузку в формате XML (некоторые данные одного сотрудника). Приведенный ниже код сохраняет данные для одного сотрудника, как и ожидалось.

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? По сути, я хочу обработать функцию saveAll с помощью webflux, и учитывая, что мне нужно работать с JDB C (я понимаю, что JDB C не поддерживает неблокирующую парадигму, а Mon go поддерживает API saveAll, но я у меня есть определенные ограничения в отношении того, какую БД я могу использовать, и поэтому должен работать с JDB C)

Спасибо.

...