我可以通过实现tasklet来执行存储过程。
但是可以从配置job.xml文件执行存储过程吗?
答案 0 :(得分:1)
StoredProcedureItemReader
的工作方式与JdbcCursorItemReader
类似,不同之处在于,它运行的是一个返回游标的存储过程,而不是运行查询来获取游标。存储过程可以以三种不同的方式返回光标:
作为返回的ResultSet(由SQL Server,Sybase,DB2,Derby和。使用) MySQL的)。
作为out参数返回的ref-cursor(由Oracle和 PostgreSQL的)。
作为存储函数调用的返回值
示例Java配置
@Bean
public StoredProcedureItemReader reader(DataSource dataSource) {
StoredProcedureItemReader reader = new StoredProcedureItemReader();
reader.setDataSource(dataSource);
reader.setProcedureName("sp_customer_credit");
reader.setRowMapper(new CustomerCreditRowMapper());
return reader;
}
如果您想要返回光标
@Bean
public StoredProcedureItemReader reader(DataSource dataSource) {
StoredProcedureItemReader reader = new StoredProcedureItemReader();
reader.setDataSource(dataSource);
reader.setProcedureName("sp_customer_credit");
reader.setRowMapper(new CustomerCreditRowMapper());
reader.setRefCursorPosition(1);
return reader;
}