给我写一个简单的spring batch 样例
时间: 2023-04-02 10:03:31 浏览: 148
Spring batch in action
4星 · 用户满意度95%
好的,我可以为您提供一个简单的 Spring Batch 样例。请注意,以下代码仅供参考,您需要根据您的具体需求进行修改和调整。
首先,您需要添加 Spring Batch 的依赖:
```
<dependency>
<groupId>org.springframework.batch</groupId>
<artifactId>spring-batch-core</artifactId>
<version>4.3.3</version>
</dependency>
```
接下来,您需要编写一个 Job,这个 Job 包含一个 Step,这个 Step 会读取一个 CSV 文件,然后将其中的数据写入到数据库中。以下是一个简单的示例:
```
@Configuration
@EnableBatchProcessing
public class BatchConfig {
@Autowired
private JobBuilderFactory jobBuilderFactory;
@Autowired
private StepBuilderFactory stepBuilderFactory;
@Autowired
private DataSource dataSource;
@Bean
public FlatFileItemReader<Person> reader() {
return new FlatFileItemReaderBuilder<Person>()
.name("personItemReader")
.resource(new ClassPathResource("persons.csv"))
.delimited()
.names(new String[]{"firstName", "lastName"})
.fieldSetMapper(new BeanWrapperFieldSetMapper<Person>() {{
setTargetType(Person.class);
}})
.build();
}
@Bean
public JdbcBatchItemWriter<Person> writer() {
return new JdbcBatchItemWriterBuilder<Person>()
.itemSqlParameterSourceProvider(new BeanPropertyItemSqlParameterSourceProvider<>())
.sql("INSERT INTO person (first_name, last_name) VALUES (:firstName, :lastName)")
.dataSource(dataSource)
.build();
}
@Bean
public Step step1() {
return stepBuilderFactory.get("step1")
.<Person, Person>chunk(10)
.reader(reader())
.writer(writer())
.build();
}
@Bean
public Job importUserJob() {
return jobBuilderFactory.get("importUserJob")
.incrementer(new RunIdIncrementer())
.flow(step1())
.end()
.build();
}
}
```
在这个示例中,我们使用了 FlatFileItemReader 来读取 CSV 文件,使用 JdbcBatchItemWriter 将数据写入到数据库中。在 step1() 方法中,我们将 reader 和 writer 组合在一起,使用 chunk() 方法来指定每次读取和写入的数据量。
最后,在 importUserJob() 方法中,我们将 step1() 添加到 Job 中,并使用 incrementer() 方法来指定 Job 的运行 ID。
这就是一个简单的 Spring Batch 样例,您可以根据您的具体需求进行修改和调整。
阅读全文