第48章 SQL
プロデューサーとコンシューマーの両方がサポート対象
SQL コンポーネントでは、JDBC クエリーを使用してデータベースを操作することができます。このコンポーネントと JDBC コンポーネントの相違点は、SQL の場合、クエリーがエンドポイントのプロパティーであり、クエリーに渡されるパラメーターとしてメッセージペイロードを使用ことです。
このコンポーネントは、実際の SQL 処理の背後で spring-jdbc
を使用します。
Maven ユーザーは、このコンポーネントの pom.xml
に以下の依存関係を追加する必要があります。
SQL コンポーネントは以下もサポートします。
- Idempotent Consumer EIP パターンの JDBC ベースのリポジトリー。詳細は以下を参照してください。
- Aggregator EIP パターンの JDBC ベースのリポジトリー。詳細は以下を参照してください。
48.1. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
このコンポーネントは、Transactional Client として使用できます。
SQL コンポーネントは、以下のエンドポイント URI 表記を使用します。
sql:select * from table where id=# order by name[?options]
sql:select * from table where id=# order by name[?options]
以下のように :'#name_of_the_parameter' スタイルを使用して名前付きパラメーターを使用できます。
sql:select * from table where id=:#myId order by name[?options]
sql:select * from table where id=:#myId order by name[?options]
名前付きパラメーターを使用する場合、Camel は指定された優先順位で名前を検索します。
-
java.util.Map
の場合のメッセージボディーから - メッセージヘッダーから
名前付きパラメーターを解決できない場合は、例外が発生します。
以下のように Simple 式をパラメーターとして使用できます。
sql:select * from table where id=:#${exchangeProperty.myId} order by name[?options]
sql:select * from table where id=:#${exchangeProperty.myId} order by name[?options]
SQL クエリーへのパラメーターを示す標準の ? 記号は、エンドポイントのオプションの指定に ? 記号が使用されるため、# 記号に置き換えられることに注意してください。? 記号の置換は、エンドポイントベースで設定できます。
SQL クエリーは、以下のようにクラスパスまたはファイルシステムのファイルに外部化できます。
sql:classpath:sql/myquery.sql[?options]
sql:classpath:sql/myquery.sql[?options]
myquery.sql ファイルはクラスパスにあり、プレーンテキストです。
このファイルでは、複数行を使用し、SQL を必要に応じてフォーマットできます。– 破線などのコメントも使用します。