mule - Mule 3.9.1 数据库参数化查询不返回数据
问题描述
我有以下流程参考:<flow name="getAccountsFlow">
<logger message="Type:"#[message.inboundProperties.'http.query.params'.type]"" 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:"#[message.inboundProperties.'http.query.params'.type]"" 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]
在查询中不可见?
解决方案
这是因为 query 中的表达式周围有双引号。尝试删除那些。
但是由于注入,使用占位符更安全,所以我认为无论如何我都会使用第二个示例。
推荐阅读
- javascript - 需要用回调函数替换正则表达式
- mongodb - 是否可以在 MongoTemplate 中计算不同的文档?
- concurrency - 在 Erlang 中发送/接收消息(并发)
- android - 为什么
/tools/proguard/lib/proguard.jar 版本没有变化? - mysql - mysql 使用 sum 和 product 公式的组合计算
- javascript - 如何忽略 @click 的 bootstrapvue 按钮?
- asp.net-mvc - 我可以在 ASP.NET 应用程序中唯一标识客户端计算机吗
- javascript - 在没有聚合的猫鼬中获取数组长度
- delphi - 在 Delphi 中创建一个 7zip 压缩包
- bash - bash如何正确处理变量中的空格