我创建了一个StoredProcedureItemReader
,我想StoredProcedureItemReader
@Bean
从我的ItemProcessor
. 这是我的存储过程项阅读器 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;
我不知道如何将当前用户 ID 传递给我创建的这个程序,请帮助,谢谢