【问题标题】:Reading multiple tables Spring batch ItemReader读取多个表Spring批处理ItemReader
【发布时间】:2015-11-13 04:03:23
【问题描述】:

我想读取多个表以从每个表中获取几个字段并将其写入 xml。 我创建了一个自定义 ItemReader 并有多个查询。 我有两个问题

1) 我的阅读器进入无限循环,因为我不确定何时以及如何返回 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>

【问题讨论】:

标签: spring-batch


【解决方案1】:

最好尝试使用 JdbcPgingItemReader 来读取数据,它是由 spring batch 提供的。您可以为每个表创建多个作业实例并将它们转换为 xml。

您可以指定 select,from,where 子句作为作业的参数

【讨论】:

  • 您能否提供示例 sn-p 或 git 链接或 url 等来支持您的回答?
猜你喜欢
  • 2019-04-01
  • 2012-07-30
  • 2018-05-27
  • 1970-01-01
  • 2014-02-13
  • 2015-03-09
  • 1970-01-01
  • 2014-10-29
  • 1970-01-01
相关资源
最近更新 更多