java - Spring 批处理 : Compare Data Between Database

标签 java spring-batch

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

但是我很难理解 spring batch。在步骤中,它包含 itemReader、itemProcessor 和 itemWriter。如果我的理解是正确的,一个步骤只能有一个 itemReader (cmiiw)

我的计划是分两步:

第 1 步。从 MySQL 表中列出

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

如果方法正确,我的问题是:如何在步骤中制作列表?以及如何将其传递到第 2 步?

求指导,谢谢

最佳答案

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

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 batch reader 中处理

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

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

关于java - Spring 批处理 : Compare Data Between Database,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54742965/

相关文章:

java - 缺少有关 Google Translation API 客户端问题的有效 API key ?

java - 使用 android Facebook API(版本 3.0+)更新我的 Facebook 状态

java - 如何使用 servlet 为 Eclipse 中的所有 html 和 jsp 页面维护唯一的 session ?

java - ItemWriter 仅提交第一个提交间隔

java - 使用 AsyncTaskExecutor 时项目阅读器中的数据库连接泄漏

java - Intellij IDEA : show implied iterator object in java debugger

java - Nashorn 访问 Java 对象的方法

java - Spring Batch SplitBuilder 不执行启动流程

java - 跳过 ItemProcessor 中的异常会导致二次行为

spring-batch - FlatFileParseException Spring 批处理