Spring Batch: - 一位读者多位作家

时间:2018-03-16 09:27:15

标签: spring-batch

File structure 我有一个平面文件,它有两种类型的数据。比如我有一个逗号分隔的文件,其中包含学生的信息。有多个文件,如A班学生,B班学生等。

文件中的数据就像第一行有班级信息,其余的都有学生信息。所以我想把班级信息放到班级表和学生信息到学生表。

第一行始终是HeaderDataDAO类型,所有其他行都是StudentDataDAO。

我怎样才能做到这一点?

我的文件结构 类-A * 10 * 2013-14 1 *石*巴雷特* 1964年10月19日 2 *阿曼*石* 1973年2月4日**** 3·阿曼多·洛根* 1986年12月25日 4 *拉蒂法·巴尼特* 1959年7月24日 5 *卡桑德拉·摩西·1956年9月14日********* 6个* *奥德拉霍普金斯* 1984年8月30日 7 *厄普顿·莫罗* 1973年2月4日 8 *梅洛迪·贝拉斯克斯·1953年4月26日 9 *西比尔·诺兰* 1951年6月24日***** 10 * * Glenna小* 1953年8月27日

StudentDataDAO.java

公共类StudentDataDAO {

private long id;
private String firstName;
private String lastName;
private Date birthDate;

public long getId() {
    return id;
}

public void setId(long id) {
    this.id = id;
}

public String getFirstName() {
    return firstName;
}

public void setFirstName(String firstName) {
    this.firstName = firstName;
}

public String getLastName() {
    return lastName;
}

public void setLastName(String lastName) {
    this.lastName = lastName;
}

public Date getBirthDate() {
    return birthDate;
}

public void setBirthDate(String birthDate) throws ParseException {
    if (!birthDate.equalsIgnoreCase("")) {
        SimpleDateFormat spf = new SimpleDateFormat("yyyy-MM-dd");
        this.birthDate = spf.parse(birthDate);
    } else {
        this.birthDate = null;
    }
}

@Override
public String toString() {
    return "CustomerData [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", birthDate=" + birthDate
            + "]";
}

}

HeaderDataDAO.java

公共类HeaderDataDAO {

private String className;
private String numberOfStudent;
private String batch;

public String getClassName() {
    return className;
}

public void setClassName(String className) {
    this.className = className;
}

public String getNumberOfStudent() {
    return numberOfStudent;
}

public void setNumberOfStudent(String numberOfStudent) {
    this.numberOfStudent = numberOfStudent;
}

public String getBatch() {
    return batch;
}

public void setBatch(String batch) {
    this.batch = batch;
}

@Override
public String toString() {
    return "HeaderData [className=" + className + ", numberOfStudent=" + numberOfStudent + ", batch=" + batch + "]";
}

}

2 个答案:

答案 0 :(得分:0)

您可以使用下面的CompositeItemWriter示例配置

 <bean id="compositeWriter"
        class="org.springframework.batch.item.support.CompositeItemWriter">
        <property name="delegates">
            <list>      
                <ref bean="classWriter" />
                <ref bean="studentWriter" />
            </list>
        </property>
    </bean>

答案 1 :(得分:0)