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());
我在 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());