第325章 SQL コンポーネント

Camel バージョン 1.4 以降で利用可能

sql: コンポーネントでは、JDBC クエリーを使用してデータベースを操作することができます。このコンポーネントと JDBC コンポーネントの相違点は、SQL の場合、クエリーがエンドポイントのプロパティーであり、クエリーに渡されるパラメーターとしてメッセージペイロードを使用ことです。

このコンポーネントは、実際の SQL 処理のために舞台裏で spring-jdbc を使用します。

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 コンポーネントは以下もサポートしています。

325.1. URI 形式

警告: Camel 2.11 以降、このコンポーネントはコンシューマー (例: from()) とプロデューサーエンドポイント (例 : to()) の両方を作成できます。以前のバージョンでは、プロデューサーとしてしか機能できませんでした。

情報: このコンポーネントは、Transactional Client として使用できます。

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 は指定された優先順位で名前を検索します。
1java.util.Map の場合はメッセージボディーから
2メッセージヘッダーから

名前付きパラメーターを解決できない場合は、例外が出力されます。

Camel 2.14 以降では、次のように Simple 式をパラメーターとして使用できます。

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

標準 ? SQL クエリーのパラメーターを示す記号は # 記号に置き換えられます。? 記号は、エンドポイントのオプションを指定するために使用されます。? シンボルの置換は、エンドポイントごとに設定できます。

Camel 2.17 以降では、次に示すように、SQL クエリーをクラスパスまたはファイルシステム内のファイルに外部化できます。

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

そして、myquery.sql ファイルはクラスパスにあり、単なるプレーンテキストです。

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

ファイルでは、複数行を使用して、必要に応じて SQL をフォーマットできます。– 破線などのコメントも使用します。

URI には、?option=value&option=value&…​ の形式でクエリーオプションを追加できます。