2016-05-18 4 views
1

Я использую jdbc: stored-proc-outbound-gateway для извлечения результата из хранимой процедуры. У меня есть тип возврата курсора, который отлично работает со статическим аргументом конструктора.jdbc: cursor-proc-outbound-gateway cursor - аргумент конструктора

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

<bean id="testCursor" class="package.TestCursor"> 
    <constructor-arg> 
     <value>2015/10/14</value> 
    </constructor-arg> 
</bean> 

Как сделать аргумент конструктора динамическим с полезной нагрузкой. Пожалуйста, предложите.

ответ

1

Для CURSOR вы должны использовать <int-jdbc:returning-resultset> и предоставить некоторые RawMapper построить объект целевого домена уже и избежать такого низкого уровня API как расширение Oracle Определённых Cursor типа.

+0

Класс Testcursor, который реализует SqlReturnType для настраиваемой обработки данных и требует, чтобы параметр подрядчика обрабатывал бизнес-логику .. есть способ динамически передавать аргумент в SI. Предложение, пожалуйста. –

+1

No-op. Вы должны переписать логику, чтобы принять этот аргумент в реализации 'getTypeValue()'. Для типа «return-type» требуется ссылка для компонента «singleton». Таким образом, вы можете указать его свойства только один раз на этапе инициализации. Если вы хотите получить доступ к 'payoad'' requestMessage', вы должны использовать что-то вроде 'ThreadLocal' перед' 'для хранения и очистки после этого. В противном случае было бы лучше отличить логику и адаптер адаптера выполнить логику БД, а все остальное переместить в '' –

+0

Threadlocal будет лучшим набором. Спасибо за ваше предложение. –

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