初步学习spring-batch

image

  • JobLauncher

         负责启动Job

JobRepository

        对整个批处理的新增、更新、执行进行记录。

Job

        封装处理实体,定义过程逻辑。

        定义一个Job关键是定义好一个或多个Step,然后把它们组装好即可。

Step

    Step是对Job某个过程的封装,一个Job可以包含一个或多个Step,一步步的Step按特定逻辑执行,才代表Job执行完成

 

定义Step,输入——处理——输出,即Item ReaderItem ProcessorItem Writer

  1. 通过Item Reader从文件输入数据
  2. 通过Item Processor进行业务处理和数据转换
  3. 通过Item Writer写到数据库中去

 

 

 

Spring-batch 处理csv

reader

使用FlatFileItemReader去读cvs文件

BeanWrapperFieldSetMapper<BlogInfo> fieldSetMapper = new BeanWrapperFieldSetMapper<>();

fieldSetMapper.setTargetType(BlogInfo.class);//实体类与csv做映射

return new FlatFileItemReaderBuilder<BlogInfo>()

        .name("reader")
       .delimited()

        .names(fields) //String数组-头标签

        .fieldSetMapper(fieldSetMapper)//映射

        .build();


 

 

Step

@Bean

public Step importContractDetailStep() {

    return new StepBuilder("importContractDetailStep", jobRepository)

            .<BlogInfo,BlogInfo>chunk(CHUNK_SIZE, transactionManager)

            .reader(csvReader())

            .writer(chunk -> {

                List<BlogInfo> items = (List<BlogInfo>) chunk.getItems();

                service.saveBatch(items);//写进数据库

            })

            .build();

}


 

Job

@Bean

public Job importContractDetailJob(Step step) {

    return new JobBuilder("importContractDetailJob", jobRepository)

            .start(step)

            .build();

}


 

 

在HeidiSQL 导出为csv

SELECT * FROM csv INTO OUTFILE 'C:\\note\\csv\\demo.csv' fields terminated by ','


posted @ 2023-12-25 10:07  你今日食咗饭未  阅读(32)  评论(0)    收藏  举报