【发布时间】:2020-04-21 21:48:22
【问题描述】:
我正在尝试使用 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,但我对我可以使用什么 DB 有一定的限制使用,因此必须使用 JDBC)
谢谢。
【问题讨论】:
-
您可以将R2DBC 用于响应式 RDBMS,缺少很多 ORM 功能,但对于基本的 CRUD 来说没问题。
-
它必须是 JDBC,这是我需要使用的约束
标签: spring-boot jdbc reactive-programming spring-webflux project-reactor