326.10. 示例


在以下示例中,我们执行查询并作为行 列表 检索结果,其中每行是一个 Map<String, Object& gt;,键是列名称。

首先,我们设置一个表,用于我们的示例。由于这基于单元测试,因此我们在 java 中进行:

我们执行的 SQL 脚本 createAndPopulateDatabase.sql 如下所示:

然后,我们配置路由和我们的 sql 组件。请注意,我们在 sql 端点前面使用 直接 端点。这样,我们可以使用 URI direct:simple 向直接端点发送交换,这比长 sql: URI 更容易使用。请注意,DataSource 在 registry 中查找,因此我们可以使用标准的 Spring XML 来配置我们的 数据源

然后,我们将触发消息进入 直接 端点,该端点会将它路由到查询数据库的 sql 组件。

我们可以在 Spring XML 中配置数据源,如下所示:

 <jee:jndi-lookup id="myDS" jndi-name="jdbc/myDataSource"/>

326.10.1. 使用命名参数

从 Camel 2.11 开始提供

在下面的给定路由中,我们想要从 projects 表中获取所有项目。请注意,SQL 查询具有 2 个命名参数,:#lic 和 :#min。
然后,Camel 将从消息正文或消息标头中查找这些参数。请注意,在上面的示例中,我们为命名参数设置两个带有恒定值
的标头:

   from("direct:projects")
     .setHeader("lic", constant("ASF"))
     .setHeader("min", constant(123))
     .to("sql:select * from projects where license = :#lic and id > :#min order by id")

尽管消息正文是 java.util.Map,但命名的参数将从正文中获取。

   from("direct:projects")
     .to("sql:select * from projects where license = :#lic and id > :#min order by id")
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.