Spring integration Spring集成jdbc存储过程自定义行映射器

Spring integration Spring集成jdbc存储过程自定义行映射器,spring-integration,spring-jdbc,Spring Integration,Spring Jdbc,我是Spring集成的新手,正在使用Spring 4.2.4。 我试图用jdbc:storageproc出站网关调用存储过程。我已经在使用SpringJDBC了 存储过程使用customRowMapper返回游标和am,如下所示 new SqlOutParameter(A_RC, OracleTypes.CURSOR, null, new MyCustomDataExtractor()) MyCustomDataExtractor实现SqlReturnType并返回自定义对象 现在的问题是如

我是Spring集成的新手,正在使用Spring 4.2.4。 我试图用jdbc:storageproc出站网关调用存储过程。我已经在使用SpringJDBC了

存储过程使用customRowMapper返回游标和am,如下所示

 new SqlOutParameter(A_RC, OracleTypes.CURSOR, null, new MyCustomDataExtractor())
MyCustomDataExtractor实现SqlReturnType并返回自定义对象

现在的问题是如何在我这里的代码的SI jdbc存储过程中实现这一点

    ...
<int-jdbc:sql-parameter-definition name="A_RC" type="#{T(oracle.jdbc.OracleTypes).CURSOR}" direction="OUT"/>
...
 <int-jdbc:returning-resultset name="A_RC" row-mapper="a.b.c.MyCustomDataExtractor"/>
...
。。。
...
...
Spring将其作为行映射器。我应该在这里使用变压器吗?请给我一些建议。
注意:我必须返回多个结果集。

我在sql参数定义中添加了返回类型,并删除了返回的结果集

<int-jdbc:sql-parameter-definition name="A_RC" type="#{T(oracle.jdbc.OracleTypes).CURSOR}" direction="OUT" return-type="ed"/>

这里的“ed”只是a.b.c.MyCustomDataExtractor的bean引用

<bean id="ed" class="a.b.c.MyCustomDataExtractor"/>

实际上,使用
光标
类型,您可以只使用
返回结果集
行映射器
实现

这样,您就不必担心任何
SqlReturnType
,只需将行直接映射到域对象即可

我甚至确信您可以将
MyCustomDataExtractor
修改为
RowMapper
合同

注意:使用返回结果集的
定义,您不需要
为相同的
OUT
param指定
sql参数定义。组件将其正确识别为
输出参数


是的,对于
光标
参数,您可以有几个
返回结果集。

对不起。这是你问题的答案吗?然后,请以适当的方式组织它,以帮助其他有同样问题的人。根据您的评论添加了代码片段:)感谢Bilan的回复,实际上MyCustomDataExtractor具有业务分组,它返回的是Map而不是对象列表(RowMapper)。提供了我已经实施的解决方案。。