读操作:
@Configuration
public class ItemReadDbDemo {
@Autowired
private JobBuilderFactory jobBuilderFactory;
@Autowired
private StepBuilderFactory stepBuilderFactory;
@Autowired
private ItemReader<Person> dbReader;
@Bean
public Job itemReadDbJob() {
return jobBuilderFactory.get("itemReadDbJob")
.start(itemReadDbStep())
.build();
}
@Bean
public Step itemReadDbStep() {
return stepBuilderFactory.get("itemReadDbStep")
.<Person, Person>chunk(1)
.reader(dbReader)
.writer(list -> {
for(Person person:list){
System.out.println(person);
}
}).build();
}
}
写操作:
@Configuration
public class ItemWriteDbDemo {
@Autowired
private JobBuilderFactory jobBuilderFactory;
@Autowired
private StepBuilderFactory stepBuilderFactory;
@Autowired
private ItemWriter jdbcItemWrite;
@Bean
public Job itemWriteDbJob(){
return jobBuilderFactory.get("itemWriteDbJob")
.start(itemWriteDbStep())
.build();
}
public Step itemWriteDbStep() {
return stepBuilderFactory.get("itemWriteDbStep")
.<Person,Person>chunk(2)
.reader(fileReader())
.writer(jdbcItemWrite)
.build();
}
public FlatFileItemReader<Person> fileReader() {
FlatFileItemReader<Person> reader = new FlatFileItemReader<>();
reader.setResource(new ClassPathResource("person.txt"));
//跳过行
reader.setLinesToSkip(1);
//解析数据
DelimitedLineTokenizer tokenizer = new DelimitedLineTokenizer();
tokenizer.setNames(new String[]{"id","name","age","password","perms"});
//数据映射
DefaultLineMapper<Person> mapper = new DefaultLineMapper<>();
mapper.setLineTokenizer(tokenizer);
mapper.setFieldSetMapper(new FieldSetMapper<Person>() {
@Override
public Person mapFieldSet(FieldSet fieldSet) throws BindException {
Person person = new Person();
person.setId(fieldSet.readInt(0));
person.setName(fieldSet.readString(1));
person.setAge(fieldSet.readInt(2));
person.setPassword(fieldSet.readString(3));
person.setPerms(fieldSet.readString(4));
return person;
}
});
mapper.afterPropertiesSet();
reader.setLineMapper(mapper);
return reader;
}
}