Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
处理器、分类器和写入器的Spring批处理列表_Spring_Spring Batch - Fatal编程技术网

处理器、分类器和写入器的Spring批处理列表

处理器、分类器和写入器的Spring批处理列表,spring,spring-batch,Spring,Spring Batch,我需要从csv文件读取,处理和写入数据库 情况是 我读了一行数据,在这行我有12条记录。对于每个记录,我需要执行一个过程(所有记录的过程相同) 在这个过程之后,每条记录都会进入一个不同的表(不同的writer-jdbc)。 我可以使用spring批处理进行这种处理吗 在我的程序中,我可以将数据行转换为12条记录 但我需要在分类器(ClassifierCompositeItemWriter)中做什么,它需要接受列表并返回列表吗 这样做不合乎逻辑 public class EventClassifi

我需要从csv文件读取,处理和写入数据库

情况是

我读了一行数据,在这行我有12条记录。对于每个记录,我需要执行一个过程(所有记录的过程相同) 在这个过程之后,每条记录都会进入一个不同的表(不同的writer-jdbc)。 我可以使用spring批处理进行这种处理吗

在我的程序中,我可以将数据行转换为12条记录

但我需要在分类器(ClassifierCompositeItemWriter)中做什么,它需要接受列表并返回列表吗

这样做不合乎逻辑

public class EventClassifier implements Classifier<SpecificEvent, ItemWriter<? super List<Event>>> {

    @Override
    public ItemWriter<SpecificEvent> classify(List<Event> events) {
    
        for(Event event : events){
            
            if (ReasonEnum.BANKRUP.getReason().equals(event.getScoreReason())) {
                return bankrupWriter;
            }

            if...
            

        }
    
    }

}

public class EventClassifier实现分类器因为记录类型的数量是固定的,并且遵循unix的理念,即让一件事做一件事并做好它,我将为每种类型创建一个writer,并将这些writer注册为分类器复合writer中的代理


这肯定比同一作者中的几十条if/else语句要好。原因是,在您要为新记录类型添加新写入程序的那天,您只需要为该类型创建一个新写入程序并将其注册到组合中,而不是通过添加额外的if语句来修改单个写入程序。

记录数是固定的还是动态的?ie所有行是否都有12条记录,或者可能更多或更少?这是为您的需求设计一个好的解决方案的关键
在我的分类器(ClassifierCompositeItemWriter)中,是否需要接受列表并返回列表?
:编写器不返回任何内容,只接受项目列表。因此,是的,您的编写者应该接受记录列表,对它们进行分类并将它们写入相应的表中。始终为12条记录。我的分类器示例是否正确?每一张唱片都需要不同的作者。。这就是为什么我认为a需要一个分类器当我读一行时,我得到了12条记录。在我的处理器中,我可以将该行转换为12条记录并填写一个列表。我已经按类型创建了一个writer。我的问题更多的是关于需要获取项目列表的分类器,我不知道怎么做。在到达分类器之前,你需要找到一种方法将列表平面映射到单个列表中。我不确定使用内置的
分类器compositionItemWriter
您试图实现的目标是否可行。有读卡器、处理器、编写器、分类器。。。您想在哪里执行此操作?