初步学习spring-batch

2023-12-25 10:43:30

  • 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 ','

文章来源:https://blog.csdn.net/LUOZONGW/article/details/135192317
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。