2016-03-04 32 views
1

我是Spring Integration的新手,並且使用Spring 4.2.4。 我想用jdbc:stored-proc-outbound-gateway調用存儲過程。我已經在使用spring jdbc了。Spring集成jdbc存儲過程自定義rowmapper

存儲過程返回遊標和正在使用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"/> 
... 

春希望這作爲行映射。我應該在這裏使用任何變壓器?請指教。 注意:我必須返回多個結果集。

回答

1

其實與CURSOR類型,你是好去只是一個returning-resultsetRowMapper實施。

因此,您不必擔心任何SqlReturnType,只需將該行直接映射到您的域對象即可。

我甚至確定您可以將您的MyCustomDataExtractor修改爲RowMapper合同。

注:與returning-resultset定義您不需要 指定sql-parameter-definition爲相同的OUT參數。組件將它們正確標識爲OutParameter

而且,對於CURSOR參數,您可以有幾個returning-resultset

+0

感謝Bilan爲您的迴應,實際上MyCustomDataExtractor具有業務分組,並且它返回的是Map而不是對象列表(RowMapper)。提供了我實施的解決方案.. –

0

我在sql-parameter-definition中添加了返回類型,並刪除了返回結果集。

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

對不起。這是你的問題的答案嗎?然後,以適當的方式幫助其他人解決同樣的問題。 –

+0

根據您的評論添加了片段.. :) –