326.10. 示例
在以下示例中,我们执行查询并检索行 列表
的结果,其中每行都是 Map<String, Object&
gt;,键是列名称。
首先,我们设置了一个表,用于我们的示例。由于这基于单元测试,我们在 java 中执行此操作:
SQL 脚本 createAndPopulateDatabase.sql
我们执行的结果如下:
然后,我们配置路由和 sql
组件。请注意,我们在 sql
端点前面使用 直接
端点。这样,我们可以通过 URI 直接向 直接
端点发送交换,直接:simple
,这比 long sql:
URI 更易于使用。请注意,DataSource
在注册中心中查找,因此我们可以使用标准 Spring XML 来配置我们的 数据源
。
然后,我们将该消息放入 直接
端点,该端点将将其路由到查询数据库的 sql
组件。
我们可以在 Spring XML 中配置 DataSource
,如下所示:
<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
,则 named 参数将从正文中获取。
from("direct:projects") .to("sql:select * from projects where license = :#lic and id > :#min order by id")