提问人:PDJ 提问时间:11/16/2023 更新时间:11/16/2023 访问量:11
在 r2dbc 中调用 Oracle 存储过程并映射 refcursor 结果
Call Oracle Stored Procedure and Map refcursor results in r2dbc
问:
我被要求在在线购物应用程序上创建概念验证。此应用程序在 Spring Boot 中公开 Flux API。
class UserMasterInfo{
private List<Orders> orderHistory;
private List<Address> userAddresses;
private List<Review> userReviews;
private List<PaymentMode> paymentModes;
private Subscription superSubscription;
private User userDetail;
//getters and setters
//overridden tostring
}
我的存储过程返回 6 个不同的游标,其中包含 UserMasterInfo 中每个属性的数据。我做了一些基本的基础工作并映射了一个 ref 光标。但我不明白如何映射其余的 refcursor。在这方面的一些帮助将非常有用。
public class DataRepository{
@Autowired
private R2dbcEntityTemplate template;
@Autowired
private DatabaseClient databaseClient;
@Autowired
private MappingR2dbcConverter converter;
public Flux<UserMasterInfo> getUserMasterInfo(){
String query = "stored proc query";
return databaseClient.inConnectionMany(
connection -> {
Statement statement = connection.createStatement(query)
.bind("order_hist",Parameters.out(OracleR2dbcTypes.REF_CURSOR));
return Flux.from(statement.execute())
.flatMap(result -> result
.map(outParameters -> outParameters.get("order_hist")))
.cast(Result.class)
.flatMap(result -> result.map(
row -> converter.read(Orders.class,(Row) row)));
});
}
}
有人知道如何进行多光标映射吗?
答: 暂无答案
评论