2016-03-04 3 views
1

Я новичок в Spring Integration и использую Spring 4.2.4. Я пытаюсь вызвать хранимую процедуру с помощью jdbc: stored-proc-outbound-gateway. Я уже использую Spring jdbc.Spring Integration jdbc хранимая процедура custom 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"/> 
... 

Spring ожидать, что это как строка картографа. должен ли я использовать какой-либо трансформатор здесь? Пожалуйста посоветуй. Примечание: Мне нужно вернуть несколько результатов.

ответ

1

На самом деле с CURSOR типа вы хорошо идти только с реализацией returning-resultset и RowMapper.

С этим вам не нужно беспокоиться ни о каком SqlReturnType и просто сопоставить строку с объектом домена напрямую.

Я даже уверен, что вы можете доработать свой MyCustomDataExtractor до договора RowMapper.

Примечания: с returning-resultset Defintion вам не нужно указать sql-parameter-definition для одной и тех же OUT паров. Компонент правильно идентифицирует их как OutParameter.

И, да, у вас может быть несколько returning-resultset для параметров CURSOR.

+0

Спасибо Bilan за ваш ответ, на самом деле MyCustomDataExtractor, имеющий бизнес-группировку, и возвращает Map вместо списка объектов (RowMapper). При условии решения, которое я реализовал .. –

0

Я добавил возвращаемый тип в определение параметра sql и удалил возвращаемый результат.

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

и здесь «изд» нет ничего, кроме ссылки боба для a.b.c.MyCustomDataExtractor.

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

Извините. Это ответ на вашу проблему? Затем сформируйте его, пожалуйста, в соответствующем стиле, чтобы помочь другим людям с одинаковой проблемой. –

+0

Добавил фрагмент в соответствии с вашим комментарием .. :) –

Смежные вопросы