323.3. メッセージボディーの扱い
SQL コンポーネントは、メッセージボディーを java.util.Iterator
型のオブジェクトに変換しようとし、この反復子を使用してクエリーパラメーターを入力します (各クエリーパラメーターは、エンドポイント URI の #
記号 (または設定されたプレースホルダー) で表されます)。.メッセージ本文が配列でもコレクションでもない場合、変換の結果は、本文自体である 1 つのオブジェクトのみを反復処理する反復子になります。
たとえば、メッセージ本文が java.util.List
のインスタンスである場合、リストの最初の項目は SQL クエリーで最初に出現する #
に置換され、リストの 2 番目の項目は 2 番目に出現する #
などに置換されます
batch
が true
に設定されている場合、受信メッセージ本文の解釈がわずかに変更されます。コンポーネントは、パラメーターのイテレーターではなく、パラメーターの反復子を含む反復子を期待します。外側の反復子のサイズによってバッチサイズが決まります。
Camel 2.16 以降では、メッセージ本文を SQL ステートメントとして使用できるようにするオプション useMessageBodyForSql を使用できます。次に、SQL パラメーターをキー SqlConstants.SQL_PARAMETERS を使用してヘッダーに指定する必要があります。これにより、SQL クエリーがメッセージ本文からのものであるため、SQL コンポーネントがより動的に動作できるようになります。