48.5. 消息正文的处理
SQL 组件会尝试将消息正文转换为 java.util.Iterator
类型的对象,然后使用此迭代器填充查询参数(每个查询参数由端点 URI 中的 # 符号(或配置的占位符)表示。如果消息正文不是数组或集合,则转换会导致迭代仅迭代一个对象(即正文本身)的迭代器。
例如,如果邮件正文是 java.util.List
的实例,则列表中的第一个项将被替换为 SQL 查询中的第一个出现的 #,该列表中的第二个项将被替换为第二个 # 发生位置,以此类推。
如果 batch
设为 true
,则对入站消息正文的解释稍有变化,而不是参数迭代,则组件需要一个包含迭代参数的迭代器;外部迭代器的大小决定了批处理大小。
您可以使用选项 useMessageBodyForSql
,该选项允许使用消息正文作为 SQL 语句,然后在带有键 SqlConstants.SQL_PARAMETERS
的标头中提供 SQL 参数。这允许 SQL 组件在来自邮件正文时动态地工作。使用模板(如 Velocity、Freemarker)进行条件处理,例如,根据查询参数的存在,包括或排除 where
子句。