Spring Batch:比较数据库之间的数据

时间:2019-02-18 08:18:11

标签: java spring-batch

我有两个数据库,Oracle和MySQL。 目标是将Oracle表中的值保存到MySQL中,要求:MySQL表中不存在数据。

但是我很难理解春季批处理。在步骤中,它包含itemReader,itemProcessor和itemWriter。如果我的理解是正确的,那么一个步骤只能有一个itemReader(cmiiw)

我的计划是执行2个步骤:

第1步。从MySQL表中列出

步骤2。使用主键ex:id将来自Oracle的T与列表(步骤1)进行比较。

如果方法正确,我的问题是:如何逐步列出清单?以及如何将其传递到步骤2?

我在这方面需要指导,谢谢

1 个答案:

答案 0 :(得分:0)

根据您的要求,您可以使用自定义项目阅读器,例如

public class MyItemReader implements ItemReader<MyDTO> {

    @Override
    public MyDTO read() throws Exception {
        MyDTO myDto = null;

        /*
        your custom code 

        */

        return myDto;
    }
}

但是,根据Sprig批处理结构,更好的方法是

enter image description here

因此,您可以在处理器中处理逻辑,在处理器中,您可以将数据与oracle进行比较

步骤1. MySQL表中的列表-将在spring批处理读取器中处理

步骤2。使用主键ex:id将Oracle的T与List(步骤1)进行比较。 -将在处理器

中处理

为了提高性能,如果Oracle数据不是太多,我建议您使用一些缓存。如果oracle数据很大,那么您可以采用简单的方法在处理器中的oracle DB上查找数据