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