使用Spring Batch在数据库中为多种记录格式插入一行

时间:2013-09-12 17:37:11

标签: 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;something new
T;1;503.45

它有一个标题,N行数据(以'D'开头)和尾部(以'T'开头)。

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

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

有办法吗?

感谢。

1 个答案:

答案 0 :(得分:0)

您可以查看this官方论坛帖子或名为Multiline Order的春季批量示例 重点是

  1. 拥有ItemReader<YouBeanClass>个自定义ItemReader<FieldSet>代表,负责根据记录标题(FieldSet)创建正确的H,D,T
  2. 设置PatternMatchingCompositeLineTokenizer以创建权利FieldSet(在第1点附加到ItemReader<FieldSet>
  3. ItemReader<YouBeanClass>重写ItemReader.read()并从每个H(D+)T记录范围构建一个YourBeanClass
  4. 之后你有一个完全构造的YourBeanClass对象。