Java spring批处理csv:向csv添加多个标题

Java spring批处理csv:向csv添加多个标题,java,spring,spring-boot,csv,spring-batch,Java,Spring,Spring Boot,Csv,Spring Batch,如何在csv中写入多个标头,以便第二个标头值来自数据库 //预期产量 personId,firstName,lastName,email,age fullname,total // this is the second header which should come the database kaa,karthi,sa,123@,34 //下面是spring批量写入csv的代码片段 @Bean(destroyMethod="") public JdbcCursorItemReade

如何在csv中写入多个标头,以便第二个标头值来自数据库

//预期产量

personId,firstName,lastName,email,age
fullname,total // this is the second header which  should come the database
kaa,karthi,sa,123@,34
//下面是spring批量写入csv的代码片段

@Bean(destroyMethod="")
    public JdbcCursorItemReader<Person> reader(){
        JdbcCursorItemReader<Person> cursorItemReader = new JdbcCursorItemReader<>();
        cursorItemReader.setDataSource(dataSource);
        cursorItemReader.setSql("SELECT person_id,first_name,last_name,email,age FROM springbatchdb.person");
        cursorItemReader.setRowMapper(new PersonRowMapper());
        return cursorItemReader;
    }
    @Bean(destroyMethod="")
    public PersonItenProcessor processor(){
        return new PersonItenProcessor();
    }

    @Bean(destroyMethod="")
    public FlatFileItemWriter<Person> writer(){
        FlatFileItemWriter<Person> writer = new FlatFileItemWriter<Person>();
        String exportFileHeader = "personId,firstName,lastName,email,age";
        StringHeaderWriter headerWriter = new StringHeaderWriter(exportFileHeader);
        writer.setHeaderCallback(headerWriter);

        writer.setResource(new ClassPathResource("person.csv"));
        DelimitedLineAggregator<Person> lineAggregator = new DelimitedLineAggregator<Person>();
        lineAggregator.setDelimiter(",");

        BeanWrapperFieldExtractor<Person>  fieldExtractor = new BeanWrapperFieldExtractor<Person>();
        fieldExtractor.setNames(new String[]{"personId","firstName","lastName","email","age"});
        lineAggregator.setFieldExtractor(fieldExtractor);

        writer.setLineAggregator(lineAggregator);
        return writer;
}
@Bean(destromethod=”“)
公共JdbcCursorItemReader(){
JdbcCursorItemReader cursorItemReader=新的JdbcCursorItemReader();
setDataSource(dataSource);
setSql(“从springbatchdb.person中选择人员id、名字、姓氏、电子邮件、年龄”);
setRowMapper(新的PersonRowMapper());
返回游标阅读器;
}
@Bean(方法=”)
公共个人处理器处理器(){
返回新的PersoninProcessor();
}
@Bean(方法=”)
公共FlatFileItemWriter编写器(){
FlatFileItemWriter writer=新的FlatFileItemWriter();
String exportFileHeader=“personId,firstName,lastName,email,age”;
StringHeaderWriter-headerWriter=新StringHeaderWriter(exportFileHeader);
writer.setHeaderCallback(headerWriter);
writer.setResource(新类路径资源(“person.csv”);
DelimitedLineAggregator lineAggregator=新的DelimitedLineAggregator();
lineAggregator.setDelimiter(“,”);
BeanWrapperFieldExtractor字段提取器=新的BeanWrapperFieldExtractor();
setNames(新字符串[]{“personId”、“firstName”、“lastName”、“email”、“age”});
lineAggregator.setFieldExtractor(fieldExtractor);
writer.setLineAggregator(lineAggregator);
返回作者;
}

您可以在
FlatFileHeaderCallback
中执行查询,并将结果附加到标题的第一行