Spring integration Spring集成:如何将阵列作为单个有效负载发送到jdbc:出站网关
如何将阵列作为单个有效负载发送到jdbc:Spring集成的出站网关? 我正在构造一个字符串数组并将其发送到接口方法。但是,SQL接受一个参数“:payload”,并以UncategorizedSQLException失败 出站网关的Sql查询如下:Spring integration Spring集成:如何将阵列作为单个有效负载发送到jdbc:出站网关,spring-integration,Spring Integration,如何将阵列作为单个有效负载发送到jdbc:Spring集成的出站网关? 我正在构造一个字符串数组并将其发送到接口方法。但是,SQL接受一个参数“:payload”,并以UncategorizedSQLException失败 出站网关的Sql查询如下: <int-jdbc:outbound-gateway data-source="dataSource" request-channel="requestChannel" query=
<int-jdbc:outbound-gateway data-source="dataSource" request-channel="requestChannel"
query="select XMLMSG from Table where SEQ_ID in (:payload)"
reply-channel="replyChannel" >
</int-jdbc:outbound-gateway>
serviceinterface.findBySequenceIds(sequenceIdStringArray);
serviceinterface.findBySequenceIds(SequenceIDStringaray);
实际上,对于子句中的,参数必须是集合
而不是数组
。NamedParameterJdbcTemplate.substituteNamedParameters
的源代码:
if (value instanceof Collection) {
Iterator<?> entryIter = ((Collection<?>) value).iterator();
int k = 0;
while (entryIter.hasNext()) {
if (k > 0) {
actualSql.append(", ");
}
......
actualSql.append("?");
你真正的疑问是:
select XMLMSG from Table where SEQ_ID in (?, ?, ?)
jdbc模板
将为您完成的其他工作
更新
注意,默认情况下,
只选择一条记录。要消除此限制,请指定max rows per poll=“0”
如果无法为命名参数的计数动态构造SQL查询,Spring Integration将使用配置文件。不,您的配置是正常的。您的问题围绕一种有效负载。我说的是real
query,意思是它将被发送到数据库。我知道怎么做。您只需将数组有效负载
更改为列表
谢谢,让我试试这种方法。我会随时通知您。我尝试了这种方法,但是replychannel/rowmapper只拾取了一条记录(xml有效负载)。请告知。1。您的选择是否确实返回了多条记录?2.如何为查询参数构建列表
有效负载?3.你没有试过调试,至少你的代码?
select XMLMSG from Table where SEQ_ID in (?, ?, ?)