Spring集成jdbc存储过程自定义rowmapper

时间:2016-03-04 16:11:23

标签: spring-integration spring-jdbc

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

存储过程正在返回游标,我正在使用customRowMapper,如下所示

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

MyCustomDataExtractor实现SqlReturnType并返回自定义对象。

现在的问题是如何在我的代码的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希望将其作为行映射器。我应该在这里使用任何变压器?请指教。 注意:我必须返回多个结果集。

2 个答案:

答案 0 :(得分:1)

实际上使用CURSOR类型,您只需returning-resultsetRowMapper实施即可。

使用它,您无需担心任何SqlReturnType,只需将行直接映射到您的域对象。

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

注意:returning-resultset定义你不需要 为同一sql-parameter-definition个参数指定OUT。该组件将它们正确识别为OutParameter

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

答案 1 :(得分:0)

我在sql-parameter-definition中添加了return-type并删除了returns-resultset。

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

这里&#34; ed&#34;只不过是a.b.c.MyCustomDataExtractor的bean引用。

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