325.11. 在制作者中使用表达式参数

可从 Camel 2.14 开始

在下面的给定路由中,我们希望从数据库获取所有项目。它使用交换的正文来定义许可证,并将 属性的值用作第二个参数。

from("direct:projects")
  .setBody(constant("ASF"))
  .setProperty("min", constant(123))
  .to("sql:select * from projects where license = :#${body} and id > :#${property.min} order by id")

325.11.1. 在消费者中使用表达式参数

可作为 Camel 2.23 使用

当将 SQL 组件用作消费者时,您现在还可以使用表达式参数(简单语言)构建动态查询参数,如在 bean 上调用 bean 以检索 id、date 或 something 的方法。

例如,以下示例中调用 bean myIdGenerator 上的 nextId 方法:

from("sql:select * from projects where id = :#${bean:myIdGenerator.nextId}")
    .to("mock:result");

和 bean 有以下方法:

public static class MyIdGenerator {

    private int id = 1;

    public int nextId() {
        return id++;
    }

请注意,没有消息正文和标头的现有 Exchange,因此消费者中使用的简单表达式最可用于调用 bean 方法,如本例中所示。