无法生成符合预期条件的文件-春季批处理

问题描述

我已经开发了Spring Batch应用程序,它将从数据库中读取数据并写入CSV文件。我正在使用面向块的处理弹簧批处理。

这里的问题是我无法将文件生成为预期的输出文件

预期的输出文件

FileStart,60 // 60 - is count of volumes which will calculated from below details
StateRecordStart1 // 1 - is count in this file to differentiate the states.
Alabama,Adamsville,5 // State,City,Volume
Alabama,Addison,3
Alabama,Akron,2
StateRecordEnd1
StateRecordStart2
California,Adelanto,10
California,Agoura Hills,15
California,Alameda,25
California,Albany,5
StateRecordEnd2
FileEnd

但是我可以将文件生成

Alabama,2
California,5

工作:

@Bean
public Job exportUserJob() {
    return jobBuilderFactory.get("exportUserJob").incrementer(new RunIdIncrementer()).flow(step1()).end().build();
}

步骤:

@Bean
public Step step1() {
    return stepBuilderFactory.get("step1").<User,User>chunk(10).reader(reader()).processor(processor())
                .writer(writer()).build();
}

阅读器:

@Bean
    public JdbcCursorItemReader<User> reader() {
    JdbcCursorItemReader<User> reader = new JdbcCursorItemReader<User>();
    reader.setDataSource(dataSource);
    reader.setsql("SELECT state,city,volume FROM user");
    reader.setRowMapper(new UserRowMapper());

    return reader;
}

public class UserRowMapper implements RowMapper<User> {

    @Override
    public User mapRow(ResultSet rs,int rowNum) throws sqlException {
        User user = new User();
        user.setId(rs.getInt("state"));
        user.setName(rs.getString("city"));
        user.setName(rs.getString("volume"));

        return user;
    }

}

处理器:

@Bean
public Useritemprocessor processor() {
    return new Useritemprocessor();
}
public class Useritemprocessor implements itemprocessor<User,User> {

    @Override
    public User process(User user) throws Exception {
        return user;
    }

}

作家:

@Bean
public FileIW<User> writer() {
    FileIW<User> writer = new FileIW<User>();
    writer.setResource(new ClassPathResource("user.csv"));
    writer.setLineAggregator(new DelimitedLineAggregator<User>() {
        {
            setDelimiter(",");
            setFieldExtractor(new BeanWrapperFieldExtractor<User>() {
                {
                    setNames(new String[] { "state","city","volume" });
                }
            });
        }
    });

    return writer;
}

public class FileIW<T> extends FlatFileItemWriter<T> {

    @Override
    public String doWrite(List<? extends T> items) {
        StringBuilder lines = new StringBuilder();
        for (T item : items) {
            User user = (User)item;
            System.out.println(user.getId());
            lines.append(this.lineAggregator.aggregate(item)).append(this.lineseparator);
        }
        return lines.toString();
    }

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...