如何安全地为 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")
我正在尝试使用 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")