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



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

不编译。

类型中的setBody(Expression)方法ProcessorDefinition不适用于参数(字符串)

您需要使用simple()将字符串塞进setBody(),但是当我尝试这样做时,名称参数不起作用。我们碰到了";在运行时失败。

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

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

setBody(simple("...:?lic"))works。
看一下这里的例子
项目编译没有任何错误,并且在运行时

中有成功的选择结果
590 [main] INFO route2  - select result - [{ID=123, LICENSE=ASF}]

相关内容

  • 没有找到相关文章

最新更新