在 r2dbc 中调用 Oracle 存储过程并映射 refcursor 结果

Call Oracle Stored Procedure and Map refcursor results in r2dbc

提问人:PDJ 提问时间:11/16/2023 更新时间:11/16/2023 访问量:11

问:

我被要求在在线购物应用程序上创建概念验证。此应用程序在 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)));
                        

            });
   }
}

有人知道如何进行多光标映射吗?

弹簧 spring-boot spring-webflux spring-data-r2dbc r2dbc

评论


答: 暂无答案