46.12. 在制作者中使用表达式参数
在以下给定路由中,我们希望从数据库中获取所有项目。它使用交换的正文来定义许可证,并将属性值用作第二个参数。
from("direct:projects") .setBody(constant("ASF")) .setProperty("min", constant(123)) .to("sql:select * from projects where license = :#${body} and id > :#${exchangeProperty.min} order by id")
46.12.1. 在消费者中使用表达式参数
将 SQL 组件用作使用者时,您现在还可使用表达式参数(简单语言)来构建动态查询参数,如对 bean 的调用方法来检索 id、日期或内容。
例如,在下面的示例中,我们调用 bean myIdGenerator 中的 nextId 方法:
from("sql:select * from projects where id = :#${bean:myIdGenerator.nextId}") .to("mock:result");
an 有以下方法:
public static class MyIdGenerator { private int id = 1; public int nextId() { return id++; }
请注意,不存在带有邮件正文和标头的现有 Exchange
,因此,您可以在使用者中使用的简单表达式最常用于调用 Bean 方法,如本例中所示。