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

Spring Integration jdbc stored procedure custom rowmapper

我是 Spring 集成的新手,正在使用 Spring 4.2.4。 我正在尝试使用 jdbc:stored-proc-outbound-gateway 调用存储过程。我已经在使用 spring jdbc。

存储过程正在 returning 游标并且正在使用如下所示的 customRowMapper

 new SqlOutParameter(A_RC, OracleTypes.CURSOR, null, new MyCustomDataExtractor())

MyCustomDataExtractor 实现了 SqlReturnType 并且它 return 是自定义对象。

现在的问题是我如何在 SI jdbc 存储我的代码 proc.piece 中实现这一点..

    ...
<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 希望这是一个行映射器。我应该在这里使用任何变压器吗?请指教。 注意:我必须 return 多个结果集。

我在 sql 参数定义中添加了 return 类型并删除了 returning-resultset。

<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"/>

实际上,对于 CURSOR 类型,您可以使用 returning-resultsetRowMapper 实现。

有了它,您无需担心任何 SqlReturnType,只需将行直接映射到您的域对象即可。

我什至确定你可以将 MyCustomDataExtractor 修改为 RowMapper 合同。

注意:使用 returning-resultset 定义您不需要 为相同的 OUT 参数指定 sql-parameter-definition。该组件将它们正确识别为 OutParameter.

而且,是的,您可以为 CURSOR 个参数设置多个 returning-resultset