我有两个数据库,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 批处理结构,更好的方法是
所以你可以在处理器中处理你的逻辑,在处理器中你可以将数据与 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/