323.3. メッセージボディーの扱い

SQL コンポーネントは、メッセージボディーを java.util.Iterator 型のオブジェクトに変換しようとし、この反復子を使用してクエリーパラメーターを入力します (各クエリーパラメーターは、エンドポイント URI の # 記号 (または設定されたプレースホルダー) で表されます)。.メッセージ本文が配列でもコレクションでもない場合、変換の結果は、本文自体である 1 つのオブジェクトのみを反復処理する反復子になります。

たとえば、メッセージ本文が java.util.List のインスタンスである場合、リストの最初の項目は SQL クエリーで最初に出現する # に置換され、リストの 2 番目の項目は 2 番目に出現する # などに置換されます

batchtrue に設定されている場合、受信メッセージ本文の解釈がわずかに変更されます。コンポーネントは、パラメーターのイテレーターではなく、パラメーターの反復子を含む反復子を期待します。外側の反復子のサイズによってバッチサイズが決まります。

Camel 2.16 以降では、メッセージ本文を SQL ステートメントとして使用できるようにするオプション useMessageBodyForSql を使用できます。次に、SQL パラメーターをキー SqlConstants.SQL_PARAMETERS を使用してヘッダーに指定する必要があります。これにより、SQL クエリーがメッセージ本文からのものであるため、SQL コンポーネントがより動的に動作できるようになります。