Как вызвать функцию 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;

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

0 ответов

Другие вопросы по тегам