StoredProcedureItemReader Spring 批量设置参数值

StoredProcedureItemReader Spring Batch setting param values

我在 Spring 批处理中使用 StoredProcedureItemReader 通过存储过程(它接受输入参数)从数据库中读取项目。 我已经完成了 StoredProcedureItemReader 的基本配置设置,但不知道如何设置其中的参数值。

    StoredProcedureItemReader storedProcItemReader = new StoredProcedureItemReader();
    storedProcItemReader.setDataSource(dataSource);
    storedProcItemReader.setProcedureName("proc_name");

    SqlParameter[] parameter = {new SqlParameter(OracleTypes.VARCHAR),new SqlParameter(OracleTypes.VARCHAR),new SqlParameter(OracleTypes.CURSOR)};
    storedProcItemReader.setParameters(parameter);
    storedProcItemReader.setPreparedStatementSetter(??)

我想通过 PreparedStatementSetter 设置两个输入参数的值。我该如何设置它。我需要为此使用准备好的语句吗?因为我已经给出了过程名称(其中包含要执行的所有查询)。

谢谢

您需要使用 ItemPreparedStatementSetter :

public class MyItemPreparedStatementSetter implements ItemPreparedStatementSetter<T> {

    @Override
    public void setValues(T item, PreparedStatement ps) throws SQLException {

        //Set your values here, example :
        ps.setString(1, item.getProperty());
    }
}

语句字段是 1 索引的。

然后你可以把它传给你的 reader :

  storedProcItemReader.setPreparedStatementSetter(new MyItemPreparedStatementSetter());