Spring Batch Reader参数问题

时间:2013-12-01 02:59:03

标签: java spring-batch

目前我需要使用Spring批处理实现以下步骤:

  1. 从数据源A读取表格数据;
  2. 根据我在步骤1从数据源A获得的列值作为搜索条件,从数据源B读取表数据;
  3. 将我在第2步获得的内容写入其他地方
  4. 从技术上讲,我处理第1步和第3步没有问题,但是有人可以建议如何解决第2步?我知道在第1步之后我可以得到一个rowMapper类,它将每行数据映射到我的域对象,在这种情况下如何将列值(域对象属性)作为参数传递给第2步?

2 个答案:

答案 0 :(得分:2)

Spring Batch Chunk Processing

我试图在评论中(以及documentation的链接)进行解释。使用面向块的步骤。您的序列对应于以下

  1. ItemReader
  2. ItemProcessor中
  3. ItemWriter
  4. 对于读者,您可以使用JdbcCursorItemReaderRowMapper将结果转换为对象。在ItemProcessor中,您使用带有查询的JdbcTemplate并使用传入对象将参数与其他RowMapper一起添加到查询中,这会将结果转换为对象。此对象传递给ItemWriter,它存储您可以使用JdbcBatchItemWriter的对象。

    根据您对第2/3步的需求,您可以尝试创建一个自定义编写器,在单个查询中执行处理(读取/更新)(这可能比读取,构造对象和再次写入更快)。

答案 1 :(得分:1)

为什么不在Datasource B中创建Staging表(我假设它的数据库不同)。并调整您的查询。因此,您的步骤将是

  1. 步骤1:从DataSource A读取数据并写入Datasource B的登台表。
  2. 步骤2:从Datasouce B读取数据并写入文件/其他地方。 (在第2步中选择你的select语句来满足你的条件。