51.13. 使用带有动态值的 IN 查询


SQL 制作者允许在计算 IN 值的 IN 语句中使用 SQL 查询。例如,来自邮件正文或标头等。

要使用 IN,您需要:

  • 为参数名称添加前缀
  • 在参数中添加()

一个示例可以更好地阐述。使用以下查询:

-- this is a comment
select *
from projects
where project in (:#in:names)
order by id
Copy to Clipboard Toggle word wrap

在以下路由中:

from("direct:query")
    .to("sql:classpath:sql/selectProjectsIn.sql")
    .to("log:query")
    .to("mock:query");
Copy to Clipboard Toggle word wrap

然后,IN 查询可以使用带有键名称的标头和动态值,例如:

// use an array
template.requestBodyAndHeader("direct:query", "Hi there!", "names", new String[]{"Camel", "AMQ"});

// use a list
List<String> names = new ArrayList<String>();
names.add("Camel");
names.add("AMQ");

template.requestBodyAndHeader("direct:query", "Hi there!", "names", names);

// use a string separated values with comma
template.requestBodyAndHeader("direct:query", "Hi there!", "names", "Camel,AMQ");
Copy to Clipboard Toggle word wrap

也可以在端点中指定查询,而不是外部化(注意,外部化可以更轻松地维护 SQL 查询)

from("direct:query")
    .to("sql:select * from projects where project in (:#in:names) order by id")
    .to("log:query")
    .to("mock:query");
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat