java - spring batch csv:向csv添加多个标题
问题描述
如何在 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;
}
解决方案
您可以在 a 中执行查询FlatFileHeaderCallback
并将结果附加到标题的第一行。
推荐阅读
- angular - 角度 7 - json 数组中唯一项目的列表
- java - SQL Server 更新具有多个连接的表而没有表锁
- ios - 是否有任何回调通知我使用标准 C 型 OpenSSL 调用 SSLRead()?
- html - 如何在网格项目之间添加垂直线?
- java - 如何在 iText7 中并排打印两个并行表,一次将它们呈现在一页上,然后添加新页面
- reactjs - 如何从手机使用 ReactJS Web 应用程序打印到蓝牙打印机
- spring-boot - 有没有办法在应用服务器的战争之间共享通用的 Spring Boot 库?
- python - 尽管有具体绑定,SQLAlchemy 在所有引擎中创建表
- php - 作曲家没有自动加载PHP类,或者至少找不到它
- java - 在某些情况下,有没有办法使用 Spring Data JPA Projections 来避免 @SecondaryTable 上的连接?