我在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名称(其中包含要执行的所有查询)。
由于
答案 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());