Closed gideruette closed 1 year ago
Donner la possibilité de générer ce type de code avec Spring-batch
@Bean public FlatFileItemReader<Hero> csvReader() { return new FlatFileItemReaderBuilder<Hero>() .name("personItemReader") .resource(new ClassPathResource("sample-data.csv")) .delimited() .names(new String[] { "id", "name" }) .fieldSetMapper(new BeanWrapperFieldSetMapper<Hero>() { { setTargetType(Hero.class); } }) .build(); } @Bean public Job importUserJob(JobRepository jobRepository, Step step1) { return new JobBuilder("importUserJob", jobRepository) .incrementer(new RunIdIncrementer()) .flow(step1) .end() .build(); } @Bean public Step step1(JobRepository jobRepository, PlatformTransactionManager transactionManager, HeroBulkItemWriter writer) { return new StepBuilder("step1", jobRepository) .<Hero, Hero>chunk(100000, transactionManager) .reader(csvReader()) .processor(processor()) .writer(writer) .build(); } @Bean public HeroBulkItemWriter heroBulkItemWriter(HikariDataSource dataSource) { return new HeroBulkItemWriter(dataSource); } public class HeroMapping extends AbstractMapping<Hero> { public HeroMapping() { super("toh", "hero"); mapLong("her_id", Hero::getId); mapText("her_name", Hero::getName); } } public class HeroBulkItemWriter implements ItemWriter<Hero> { DataSource dataSource; public HeroBulkItemWriter(DataSource dataSource) { this.dataSource = dataSource; } public void write(Chunk<? extends Hero> items) throws Exception { var bulkInsert = new PgBulkInsert<>(new HeroMapping()); try (var connection = dataSource.getConnection()) { List<Hero> heroes = (List<Hero>) items.getItems(); // Now save all entities of a given stream: PGConnection pgConnection = PostgreSqlUtils.getPGConnection(connection); bulkInsert.saveAll(pgConnection, heroes.stream()); } } }
Donner la possibilité de générer ce type de code avec Spring-batch