Как вызвать функцию postgres из компонента StoredProcedureItemReader с динамическим значением для функции

#spring #spring-boot #spring-batch #itemprocessor

#весна #пружинный ботинок #пружинная партия #itemпроцессор

Вопрос:

Я создал a StoredProcedureItemReader , и я хотел назвать это StoredProcedureItemReader @Bean своим ItemProcessor . Вот мой компонент чтения элементов хранимой процедуры

 @Bean public StoredProcedureItemReaderlt;Usergt; jdbcClusterObjectReader(JdbcTemplate jdbcTemplate) throws Exception {  StoredProcedureItemReaderlt;Usergt; storedProcedureItemReader = new StoredProcedureItemReaderlt;gt;();  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 ItemProcessorlt;User, Usergt; { @Autowired private ApplicationContext appContext;  @Override public User process(User item) throws Exception {  StoredProcedureItemReaderlt;Usergt; clusterDetailStoredProcedureItemReader = (StoredProcedureItemReaderlt;Usergt;) 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;  

Я не знаю, как передать текущий идентификатор пользователя в эту процедуру, которую я создал, Пожалуйста, помогите, спасибо