Spring integration Spring集成jdbc数组更新查询spel表达式

Spring integration Spring集成jdbc数组更新查询spel表达式,spring-integration,spring-jdbc,spring-el,Spring Integration,Spring Jdbc,Spring El,我正在尝试为我的JdbcPollingChannelAdapter创建一个“更新查询”,给定以下工作流: 从数据库中选择500条A型记录 使用上次读取的记录(位置500处的记录)的值更新另一个表中的1行 但我无法将其分类,因为我一直在尝试使用spring el来查找值 通过调试,我找到了JdbcPollingChannelAdapterexecuteUpdateQuery方法 void executeUpdateQuery(Object obj) { SqlParameterSo

我正在尝试为我的
JdbcPollingChannelAdapter
创建一个“更新查询”,给定以下工作流:

  • 从数据库中选择500条A型记录
  • 使用上次读取的记录(位置500处的记录)的值更新另一个表中的1行
  • 但我无法将其分类,因为我一直在尝试使用spring el来查找值

    通过调试,我找到了
    JdbcPollingChannelAdapter
    executeUpdateQuery
    方法

    void executeUpdateQuery(Object obj) {
            SqlParameterSource updateParameterSource = this.sqlParameterSourceFactory.createParameterSource(obj);
            this.jdbcOperations.update(this.updateSql, updateParameterSource);
        }
    
    其中,
    objectobj
    是一个包含500条A类记录的数组列表

    这是我最好的搭配:

    UPDATE LAST_EVENT_READ SET SEQUENCE=:#root[499].sequence, EVENT_DATE=:#[499].eventDate
    
    有人能帮我吗


    p.S.类型A具有序列和事件日期属性

    我建议您使用自定义的
    SqlParameterSourceFactory
    ,并且已经不依赖SpEL:

    public class CustomSqlParameterSourceFactory implements SqlParameterSourceFactory {
    
        @Override
        public SqlParameterSource createParameterSource(Object input) {
            List<?> objects = (List<?>) input;
            return new BeanPropertySqlParameterSource(objects.get(objects.size() - 1));
        }
    
    }
    
    UPDATE LAST_EVENT_READ SET SEQUENCE=:sequence, EVENT_DATE=:eventDate