Spring Integration - Внешние запросы JDBC
Есть ли простой способ вывести большие SQL-запросы из исходящих шлюзов jdbc, вместо того, чтобы встроить его? Причина в том, что нам нужно выполнить много больших запросов, и мы хотели бы, чтобы они были в своих собственных файлах или, по крайней мере, выводили их в виде bean-компонентов.
Некоторые предостережения:
У меня нет контроля над базой данных, поэтому я не могу ничего там создавать (например, хранимые процедуры)Я не хочу создавать классы только для этого, я просто хочу немного организовать / реорганизовать его, а не усложнять, вводя множество других шаговЯ бы предпочел создавать голые файлы .sql, но также хорошо помещать запросы в XML с бином.У меня нет возможности использовать Hibernate, застрял в Spring JDBC интеграцииПредложения о том, как лучше организовать это, учитывая, что у нас будет много других исходящих шлюзов, приветствуются :)
Например, я не хотел бы иметь встроенный SQL в элементе «int-jdbc: outbound-gateway» следующим образом:
<int-jdbc:outbound-gateway
data-source="datasource"
request-channel="reqChannel"
reply-channel="respChannel"
row-mapper="datamapper" max-rows-per-poll="1000"
query=" SELECT Field1, Field2, ManyOthers
FROM Table T
JOIN A ON A.id = T.id [... many other joins here ...]
WHERE SOMECONDITION=:payload">
</int-jdbc:outbound-gateway>
Просто:
<bean id="myCoolQuery" class="java.lang.String">
<constructor-arg>
<value>
<![CDATA[
SELECT Field1, Field2, ManyOthers
FROM Table T
JOIN A ON A.id = T.id [... many other joins here ...]
WHERE SOMECONDITION=:payload
]]>
</value>
</constructor-arg>
</bean>
<int-jdbc:outbound-gateway
data-source="datasource"
request-channel="reqChannel"
reply-channel="respChannel"
row-mapper="datamapper" max-rows-per-poll="1000"
query="#{myCoolQuery}">
</int-jdbc:outbound-gateway>
Он также работает с параметром ": payload", используемым внутри компонента.