如何安全地为Camel JDBC组件生成SQL

wqlqzqxt  于 2022-11-07  发布在  Apache
关注(0)|答案(2)|浏览(226)

我正在尝试使用JDBC进行插入,我在Camel文档中看到了这个示例:https://camel.apache.org/components/latest/jdbc-component.html#_using_named_parameters
但是

.setBody("select * from projects where license = :?lic and id > :?min order by id")

不编译。
ProcessorDefinition类型中的方法setBody(Expression)不适用于参数(String)
需要使用simple()将字符串推入setBody(),但是当我尝试这样做时,name参数不起作用。我们遇到了“:“,它在运行时失败。
是我误解了如何指定这些名称参数,还是文档错误?我们如何在Camel中安全地构建sql语句?

u2nhd7ah

u2nhd7ah1#

请确保在JDBC URL中指定 useHeadersAsParameters=true,如以下示例所示:

from("direct:projects")
 .setHeader("lic", constant("ASF"))
 .setHeader("min", constant(123))
 .setBody("select * from projects where license = :?lic and id > :?min order by id")
 .to("jdbc:myDataSource?useHeadersAsParameters=true")
5f0d552i

5f0d552i2#

setBody(simple("...:?lic"))工作正常。
看看这里的例子
项目编译时没有任何错误,并且在运行时中有成功的选择结果

590 [main] INFO route2  - select result - [{ID=123, LICENSE=ASF}]

相关问题