1

我正在尝试在 Java 中创建一个框架,该框架将支持链式/流水线查询,其中一个查询的输出将被转换为用作另一个查询的输入。PyCascading 之类的这些查询将在运行时进行。我查看了一些框架并发现了Apache CamelSpring Integration,因为它们提供了链接和路由(企业集成模式)的概念。我发现 Apache Camel 比 Spring Integration(恕我直言)更好。


我应该为我的框架选择 Apache Camel,还是有更好的方法可以实现这一目标?

我的查询语法是

Query query1 = "select customer.id from customer where customer.name = 'ABC'";
Query query2 = "select account.id from account where account.custid in {$1}";
// $1 will be the input of second query
from(query1).inputto(query2).printOutput();
4

1 回答 1

1

这可以使用camel-jdbc和一些基本的 Camel 功能(如simple)来允许您内联结果解析......

[CAMEL-JDBC] 结果在 OUT 主体中作为 ArrayList[HashMap[String,Object]] 返回。 List 对象包含行列表, Map 对象包含以 String 键作为列名的每一行。

然后可以使用此结果动态构建后续查询...

from("direct:start")
  .setBody(constant("select customer.id as ID from customer where customer.name = 'ABC'"))
  .to("jdbc:myDataSource")

  //now, use simple/ognl to extract the first result and the 'ID' from the Map in the body
  .setBody(simple("select account.id from account where account.custid in ${body[0][ID]}"))
  .to("jdbc:myDataSource")

  .log("ACCOUNT IDS = ${body}");
于 2012-03-02T04:04:58.180 回答