第 323 章 SQL 组件

作为 Camel 版本 1.4 可用

sql: 组件允许您使用 JDBC 查询来处理数据库。此组件与 JDBC 组件之间的区别是,如果 SQL 查询是端点的属性,它会使用消息有效负载作为传递给查询的参数。

此组件使用 spring-jdbc 在 scenes 后面进行实际处理。

Maven 用户需要将以下依赖项添加到其 pom.xml 中:

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-sql</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>

SQL 组件还支持:

323.1. URI 格式

重要

此组件上的 Camel 2.11 可以创建使用者( 如从())和制作者端点(如 to ())。在以前的版本中,它只能充当制作者。

注意

此组件可用作 交易客户端

SQL 组件使用以下端点 URI 表示法:

sql:select * from table where id=# order by name[?options]

从 Camel 2.11 开始,您可以使用 #name_of_the_parameter 样式使用命名的参数,如下所示:

sql:select * from table where id=:#myId order by name[?options]

当使用命名参数时,Camel 将从给定的优先级查找名称:
1。如果消息正文使用 java.util.Map
2。来自邮件标题

如果无法解析命名参数,则会抛出异常。

Camel 2.14 开始,您可以使用 Simple 表达式作为参数,如下所示:

sql:select * from table where id=:#${property.myId} order by name[?options]

请注意,表示 SQL 查询的参数的标准 ? 符号替换为 # 符号,因为 ? 符号用于指定端点的选项。? 符号替换可以在端点基础上配置。

Camel 2.17 开始,您可以将 SQL 查询外部化到 classpath 或文件系统中的文件,如下所示:

sql:classpath:sql/myquery.sql[?options]

myquery.sql 文件位于 classpath 中,只是纯文本:

-- this is a comment
select *
from table
where
  id = :#${property.myId}
order by
  name

在文件中,您可以根据需要使用多行并格式化 SQL。和 也可以使用 - dash 行等注释。

您可以使用以下格式在 URI 中附加查询选项 ?option=value&option=value&…​