我是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希望将其作为行映射器。我应该在这里使用任何变压器?请指教。 注意:我必须返回多个结果集。
答案 0 :(得分:1)
实际上使用CURSOR
类型,您只需returning-resultset
和RowMapper
实施即可。
使用它,您无需担心任何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"/>