【发布时间】:2020-07-27 20:07:32
【问题描述】:
我使用 Spring Boot 和 Spring Batch 读取并插入两个不同的表。
jdbc 游标在下面的代码 sn-p 中逐条读取,不知道如何将其保存到逐条插入语句中。
@Bean
public JdbcCursorItemReader<Studdetail> jdbcitemReader() {
JdbcCursorItemReader<Studdetail> jdbcItemReader = new JdbcCursorItemReader<>();
jdbcItemReader.setDataSource(dataSource);
jdbcItemReader.setSql("SELECT * FROM Schema1.Table1");
jdbcItemReader.setRowMapper(new StuddetailRowMapper());
int counter = 0;
ExecutionContext executionContext = new ExecutionContext();
jdbcItemReader.open(executionContext);
Object Studdetail = new Studetail();
while(Studdetail != null){
try {
Studdetail = jdbcItemReader.read();
jdbcitemWriter() ;
} catch (UnexpectedInputException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
counter++;
}
jdbcItemReader.close();
return jdbcItemReader;
}
private static final String QUERY_INSERT_STUDENT = "INSERT " + "INTO Schema2.Table2(Column1,Column2,Column3,Column4,Column5,Column6) " + "VALUES(:ID1,:ID2,:ID3,:ID4,:ID5,:ID6)";
@Bean
public ItemWriter<Studdetail> jdbcitemWriter() {
JdbcBatchItemWriter<Studdetail> jdbcItemWriter= new JdbcBatchItemWriter<>();
jdbcItemWriter.setDataSource(dataSource);
jdbcItemWriter.setSql(QUERY_INSERT_STUDENT);
ItemSqlParameterSourceProvider<Studdetail> paramProvider = new BeanPropertyItemSqlParameterSourceProvider<>();
jdbcItemWriter.setItemSqlParameterSourceProvider(paramProvider);
return jdbcItemWriter;
}
记录在 jdbcitemReader() 的 Studdetail 中填充,但无法插入。 没有错误或异常,我知道插入时丢失了一些东西。有什么建议吗?
【问题讨论】:
标签: spring-batch