Database Mule DB连接器参数化查询
这是我第一次体验Mule&试图用DB连接器定义一个流。我正在定义一个带有3个参数的参数化简单select查询,但不知怎么搞不懂。甚至在将变量值传递给查询之前,我也尝试将整个/部分查询放入变量中,但未能成功。非常感谢您的帮助Database Mule DB连接器参数化查询,database,mule,connector,parameterized-query,Database,Mule,Connector,Parameterized Query,这是我第一次体验Mule&试图用DB连接器定义一个流。我正在定义一个带有3个参数的参数化简单select查询,但不知怎么搞不懂。甚至在将变量值传递给查询之前,我也尝试将整个/部分查询放入变量中,但未能成功。非常感谢您的帮助 select * from employees where employee_country='UK' limit 1,10; 在这里,UK、1和10是动态值,将来自UI,如下所示 我的尝试: select * from employees where employee_
select * from employees where employee_country='UK' limit 1,10;
在这里,UK、1和10是动态值,将来自UI,如下所示
我的尝试:
select * from employees where employee_country=#[message.inboundProperties.'http.query.params'.country] limit #[message.inboundProperties.'http.query.params'.start],#[message.inboundProperties.'http.query.params'.limit]
Thanx,-Swapnil您正在尝试创建一个动态查询。对于参数化查询,应使用占位符分隔参数值。参数化不会替换表达式 以下是两个选项之间的区别:
<db:select config-ref="DBConfig" doc:name="Database">
<db:parameterized-query><![CDATA[select * from employees where employee_country= :country limit 1,10;]]></db:parameterized-query>
<db:in-param name="country" type="VARCHAR" value="#[message.inboundProperties.'http.query.params'.country]" />
</db:select>
动态:
<db:select config-ref="DBConfig" doc:name="Database">
<db:dynamic-query><![CDATA[select * from employees where employee_country=#[message.inboundProperties.'http.query.params'.country] limit #[message.inboundProperties.'http.query.params'.start],#[message.inboundProperties.'http.query.params'.limit]]]></db:dynamic-query>
</db:select>
以下是解释差异的文档:
参数化是推荐的方法,因为使用动态查询语句的缺点是安全性,因为它使语句为SQL注入打开
您可能需要在流中实时使用这些值。要重用它们,请通过流变量捕获。
当查询参数中有动态值时..通过变量名originalQueryParams捕获它
[message.inboundProperties.'http.query.params']
使用groovy脚本捕获这些变量,并通过设置调用属性将它们分离
def inputRequest=message.getInvocationProperty'originalQueryParams';
message.setInvocationProperty'country',inputRequest.country;
返回有效载荷
现在Country是您的流变量,并在查询中传递它
从员工所在国家/地区=“[flowVars.country]”的员工中选择*
希望这有帮助