StoredProcedureItemReader Spring Batch设置参数值

时间:2015-12-07 07:03:11

标签: prepared-statement spring-batch

我在Spring Batch中使用StoredProcedureItemReader通过存储过程(接受输入参数)从DB读取项目。 我已经完成了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设置两个输入参数的值。我该如何设置它。我是否需要使用准备好的声明。因为我已经给出了proc名称(其中包含要执行的所有查询)。

由于

1 个答案:

答案 0 :(得分:1)

您需要使用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索引。

然后你可以将它传递给你的读者:

  storedProcItemReader.setPreparedStatementSetter(new MyItemPreparedStatementSetter());