Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring batch 读取多个表Spring批处理ItemReader_Spring Batch - Fatal编程技术网

Spring batch 读取多个表Spring批处理ItemReader

Spring batch 读取多个表Spring批处理ItemReader,spring-batch,Spring Batch,我想读取多个表,从每个表中提取几个字段并将其写入xml。 我已经创建了一个自定义ItemReader,并且有多个查询。 我有两个问题 1) 我的阅读器进入了一个infinte循环,因为我不确定何时以及如何返回null 2) 整合多个表中的数据并将其发送给ItemWriter的最佳方法是什么 public class SolrTransformProductReader implements ItemReader <ProductWithPrograms> { @Autow

我想读取多个表,从每个表中提取几个字段并将其写入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;

    }

}
公共类SolrtTransferMPProductReader实现ItemReader{
@自动连线
私有JdbcTemplate JdbcTemplate;
私有字符串sql1=“从产品中选择产品\代码”;
私有字符串sql2=“从产品贡献者中选择产品贡献者代码、贡献者ID”;
@凌驾
public ProductWithPrograms read()引发异常{
SqlRowSet productRows=jdbcTemplate.queryForRowSet(sql1);
while(productRows.next()){
System.out.println(“产品代码”+productRows.getString(“产品代码”);
ProductWithPrograms pp=新产品WithPrograms();
pp.setProduct_代码(productRows.getString(“PRODUCT_代码”);
返回pp;
}
返回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>

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


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

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


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

我认为您可以满足您的需求我认为您可以满足您的需求请提供示例代码段或git链接或url等以支持您的答案?您可以提供示例代码段或git链接或url等以支持您的答案吗?