Java 使用Spring批处理在数据库中插入一行以获得多种记录格式

Java 使用Spring批处理在数据库中插入一行以获得多种记录格式,java,spring,csv,spring-batch,Java,Spring,Csv,Spring Batch,我正在寻找在数据库中插入三个bean的方法。这是我的CSV文件的一个示例: H;001;2013-10-30;20;R;2013-10;DESP;2;foobar D;003;3030;3032;2013-10;G;400;00001233399911;something D;003;3030;3033;2013-10;A;100;00001233399912;something else D;003;3030;3034;2013-10;V;500;00001233399913;somethin

我正在寻找在数据库中插入三个bean的方法。这是我的CSV文件的一个示例:

H;001;2013-10-30;20;R;2013-10;DESP;2;foobar
D;003;3030;3032;2013-10;G;400;00001233399911;something
D;003;3030;3033;2013-10;A;100;00001233399912;something else
D;003;3030;3034;2013-10;V;500;00001233399913;something new
T;1;503.45
它有一个头,N行数据(以“D”开头),最后有一个尾(以“T”开头)

我使用了
org.springframework.batch.item.file.transform.LineAggregator
类对行进行分组,然后将行传递给Processor类。我的疑问是,如何使用header+data+tail信息在数据库中插入一行。如何将标题、数据和尾部信息保存在数据库中的同一记录中

我还使用
org.springframework.classify.Classifier
类将每个bean分组到相应的编写器

有办法吗

谢谢。

您可以查看名为的官方论坛线程或spring批处理示例。
关键是

  • 有一个自定义的
    ItemReader
    委托给
    ItemReader
    ,他负责根据记录头(
    H,D,T
    )创建正确的
    字段集
  • 使用一个
    模式匹配CompositeLineTokenizer
    来创建右侧的
    字段集
    (在第1点附加到
    项目阅读器
  • ItemReader
    中重写
    ItemReader.read()
    并从每个
    H(D+)T
    记录范围建立YourBeanClass
  • 在此之后,您将拥有一个完全构造的
    YourBeanClass
    对象