ItemWriter
ItemReader是一个数据一个数据的读, 而ItemWriter是一批一批的输出
1.普通
实现ItemWriter接口,重写write方法。
@Component("myWriter")
public class MyWriter implements ItemWriter<String> {
@Override
public void write(List<? extends String> list) throws Exception {
//输出一批的数量,chunk的值
System.out.println(list.size());
for (String str:list){
System.out.println(str);
}
}
}
@Autowired
@Qualifier("myWriter")
private ItemWriter<? super String> myWriter;
@Bean
public Step ItemWriterDemoStep() {
return stepBuilderFactory.get("ItemWriterDemoStep")
.<String, String>chunk(2)
.reader(myReader())
.writer(myWriter).build();
}
2.JdbcBatchltemWriter
数据输出到数据库
步骤:
1.实例化JdbcBatchItemWriter对象,指定输出对象Customer,设置数据源
2.设置输入sql语句,通过BeanPropertyItemSqlParameterSourceProvider对象替换sql语句中的占位符
@Configuration
public class ItemWriterDbConfig {
@Autowired
private DataSource dataSource;
@Bean
public JdbcBatchItemWriter<Customer> itemWriterDb(){
JdbcBatchItemWriter writer = new JdbcBatchItemWriter<Customer>();
writer.setDataSource(dataSource);
writer.setSql("insert into customer(id,firstName,lastName,birthday) values" +
"(:id,:firstName,:lastName,:birthday)");
//将Customer中对应属性的值与Sql语句中的四个值进行替换
writer.setItemSqlParameterSourceProvider(new BeanPropertyItemSqlParameterSourceProvider<Customer>());
return writer;
}
}
2.FlatFileltemWriter
输入到普通文件中
步骤:
1.实例化FlatFileItemWriter对象,指明输入对象