第304章 SQL コンポーネント
Camel バージョン 1.4 で利用可能
sql: コンポーネントを使用すると、JDBC クエリーを使用してデータベースを操作することができます。このコンポーネントと JDBC コンポーネントの相違点は、クエリーがエンドポイントのプロパティーであり、クエリーに渡されるパラメーターとしてメッセージペイロードを使用するためです。
このコンポーネントは、実際の 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 コンポーネントは以下もサポートします。
- Idempotent Consumer EIP パターンの JDBC ベースのリポジトリー。詳細は以下を参照してください。
- Aggregator EIP パターンの JDBC ベースのリポジトリー。詳細は以下を参照してください。
304.1. URI 形式
警告: Camel 2.11 以降では、このコンポーネントからコンシューマー(例: from
())およびプロデューサーエンドポイント(例: to
())の両方を作成できます。以前のバージョンでは、プロデューサーとしてのみ動作できました。
INFO: このコンポーネントは、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 は指定の優先順位で名前を検索します。
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 クエリーをクラスパスまたはファイルシステムのファイルに外部化できます。
sql:classpath:sql/myquery.sql[?options]
myquery.sql ファイルはクラスパスにあり、プレーンテキストです。
-- this is a comment select * from table where id = :#${property.myId} order by name
ファイルで複数行を使用し、必要に応じて SQL をフォーマットできます。また、- dash 行などのコメントも使用します。
URI にクエリーオプションを追加するには、?option=value&option=value&…