我想读取多个表格以从这些表格中获取少数几个字段。把它写成一个xml。 我创建了一个自定义ItemReader并有多个查询。 我有两个问题
1)我的读者进入了一个infinte循环,因为我不知道什么时候&如何返回null
2)合并来自多个表的数据的最佳方法是什么?将它发送给ItemWriter?
public class SolrTransformProductReader implements ItemReader <ProductWithPrograms> {
@Autowired
private JdbcTemplate jdbcTemplate;
private String sql1 = "Select PRODUCT_CODE from product";
private String sql2 = "Select PRODUCT_CODE, CONTRIBUTOR_ID from product_Contributor";
@Override
public ProductWithPrograms read() throws Exception {
SqlRowSet productRows = jdbcTemplate.queryForRowSet(sql1);
while(productRows.next()) {
System.out.println("Product Code " + productRows.getString("PRODUCT_CODE"));
ProductWithPrograms pp = new ProductWithPrograms();
pp.setProduct_Code(productRows.getString("PRODUCT_CODE"));
return pp;
}
return null;
}
}
我的xml如下
<job id="SEG_SolrTransformation" xmlns="http://www.springframework.org/schema/batch">
<batch:step id="solrProductTransformation">
<tasklet>
<chunk reader="solrTransformProductReader" writer="solrTransformProductWriter" commit-interval="999" />
</tasklet>
</batch:step>
</job>
答案 0 :(得分:0)
最好尝试使用JdbcPgingItemReader来读取数据,这是由spring批处理提供的。您可以为每个表创建多个作业的启动实例,并将它们转换为xml。
您可以指定select,from,where子句作为作业的参数