目前我需要使用Spring批处理实现以下步骤:
从技术上讲,我处理第1步和第3步没有问题,但是有人可以建议如何解决第2步?我知道在第1步之后我可以得到一个rowMapper类,它将每行数据映射到我的域对象,在这种情况下如何将列值(域对象属性)作为参数传递给第2步?
答案 0 :(得分:2)
我试图在评论中(以及documentation的链接)进行解释。使用面向块的步骤。您的序列对应于以下
对于读者,您可以使用JdbcCursorItemReader
和RowMapper
将结果转换为对象。在ItemProcessor
中,您使用带有查询的JdbcTemplate
并使用传入对象将参数与其他RowMapper
一起添加到查询中,这会将结果转换为对象。此对象传递给ItemWriter
,它存储您可以使用JdbcBatchItemWriter
的对象。
根据您对第2/3步的需求,您可以尝试创建一个自定义编写器,在单个查询中执行处理(读取/更新)(这可能比读取,构造对象和再次写入更快)。
答案 1 :(得分:1)
为什么不在Datasource B中创建Staging表(我假设它的数据库不同)。并调整您的查询。因此,您的步骤将是