我正在尝试使用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}]