Spring integration Spring集成jdbc存储过程自定义行映射器
我是Spring集成的新手,正在使用Spring 4.2.4。 我试图用jdbc:storageproc出站网关调用存储过程。我已经在使用SpringJDBC了 存储过程使用customRowMapper返回游标和am,如下所示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并返回自定义对象 现在的问题是如
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)。提供了我已经实施的解决方案。。