Как вызвать функцию postgres из bean-компонента StoredProcedureItemReader с динамическим значением для функции
Я создал и хотел назвать это
StoredProcedureItemReader
@Bean
от моего . Вот мой bean-компонент для чтения элементов хранимой процедуры
@Bean
public StoredProcedureItemReader<User> jdbcClusterObjectReader(JdbcTemplate jdbcTemplate) throws Exception {
StoredProcedureItemReader<User> storedProcedureItemReader = new StoredProcedureItemReader<>();
storedProcedureItemReader.setFunction(true);
storedProcedureItemReader.setDataSource(Objects.requireNonNull(jdbcTemplate.getDataSource()));
storedProcedureItemReader.setProcedureName("function2");
storedProcedureItemReader.setParameters(
new SqlParameter[] {
new SqlParameter("_id", Types.VARCHAR)
});
storedProcedureItemReader.setCurrentItemCount(0);
storedProcedureItemReader.setConnectionAutoCommit(false);
storedProcedureItemReader.setRowMapper(new UserRowMapper());
storedProcedureItemReader.afterPropertiesSet();
System.out.println(storedProcedureItemReader.getSql());
storedProcedureItemReader.setVerifyCursorPosition(false);
return storedProcedureItemReader;
}
и вот моя реализация
ItemProcessor
@StepScope
public class UserDataProcessor implements ItemProcessor<User, User> {
@Autowired
private ApplicationContext appContext;
@Override
public User process(User item) throws Exception {
StoredProcedureItemReader<User> clusterDetailStoredProcedureItemReader = (StoredProcedureItemReader<User>) appContext.getBean("jdbcClusterObjectReader");
clusterDetailStoredProcedureItemReader.open(new ExecutionContext());
clusterDetailStoredProcedureItemReader.setParameters(new SqlParameter[]{});
ClusterDetail clusterDetail = clusterDetailStoredProcedureItemReader.read();
return clusterDetail;
}
}
и вот моя функция postgres
CREATE OR REPLACE FUNCTION function2(_clusterid varchar) AS $$
....
END;$$ LANGUAGE plpgsql;
Я не знаю, как передать текущий идентификатор пользователя в эту процедуру, которую я создал, пожалуйста, помогите, спасибо