Mule 3.9.1 параметризованный запрос базы данных не возвращает данные - PullRequest
0 голосов
/ 08 января 2019

У меня нижеприведенный эталон потока: <flow name="getAccountsFlow"> <logger message="Type:&quot;#[message.inboundProperties.'http.query.params'.type]&quot;" level="INFO" doc:name="Logger"/> <db:select config-ref="MySQL_Configuration" doc:name="Database"> <db:parameterized-query><![CDATA[select * from flights_customers where accountType = "#[message.inboundProperties.'http.query.params'.type]"]]></db:parameterized-query> </db:select> </flow>

Регистратор печатает значение переменной: INFO 2019-01-07 16:08:51,270 [[assignment-accounts].accounts-api-httpListenerConfig.worker.03] org.mule.api.processor.LoggerMessageProcessor: Type:"business"

Но запрос возвращает 0 строк.

Но когда я использую переменный преобразователь, значение может быть получено в запросе как: <flow name="getAccountsFlow"> <logger message="Type:&quot;#[message.inboundProperties.'http.query.params'.type]&quot;" level="INFO" doc:name="Logger"/> <set-variable variableName="type" value="#[message.inboundProperties.'http.query.params'.type]" doc:name="Variable"/> <db:select config-ref="MySQL_Configuration" doc:name="Database"> <db:parameterized-query><![CDATA[select * from flights_customers where accountType = :type]]></db:parameterized-query> <db:in-param name="type" type="VARCHAR" value="#[flowVars.type]" ></db:in-param> </db:select> </flow>

почему #[message.inboundProperties.'http.query.params'.type] не отображается в запросе?

1 Ответ

0 голосов
/ 08 января 2019

Это из-за двойных кавычек вокруг выражения в запросе. Попробуйте удалить их.

Но в любом случае безопаснее использовать заполнители из-за инъекции, поэтому я все равно воспользуюсь вторым примером, на мой взгляд.

...