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

How to safely generate SQL for Camel JDBC Component

我正在尝试使用 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")

不编译。

The method setBody(Expression) in the type ProcessorDefinition is not applicable for the arguments (String)

您需要使用 simple() 将字符串推送到 setBody() 中,但是当我尝试这样做时,name 参数不起作用。我们点击“:”,它在运行时失败了。

是我误解了如何指定这些名称参数还是文档有误?我们如何在 Camel 中安全地构建一个 sql 语句?

setBody(simple("...:?lic")) 有效。
看一下例子here
项目编译没有任何错误,运行时select结果成功

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

请确保您在 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")