2017-03-24 219 views
1

弹簧批量弹簧数据有没有办法整合?我看到春天文档中RepositoryItemWriterRepositoryItemWriter弹簧批量弹簧数据

+2

这是做到这一点的方式。你还在找别的东西吗? –

+0

嗯,我这样做,在一个不同的方法,我注射服务为任务配置和调用这可在JpaRepository的方法,像这样的例子 @豆 \t @ StepScope \t公共ItemWriter customerItemWriter2() { \t \t回报的项目 - > { \t \t \t的(客户项目:项目){ \t \t \t \t \t \t \t \t customerService.save(item); \t \t \t} \t \t}; \t} – kaissun

+0

为什么当我们为你提供'RepositoryItemWriter'时你会这么做? –

回答

0

嗯,我这样做,在一个不同的方法,我注射服务为任务配置和调用这可在JpaRepository的方法,像这样的例子

@Bean 
    @StepScope 
    public ItemWriter<Customer> customerItemWriter2() { 
     return items -> { 
      for (Customer item : items) { 

       customerService.save(item); 
      } 
     }; 
    } 
3

你是完全正确的。 Spring批次可以很容易地与弹簧数据集成。项目读者在这里例如:

@Bean(name = "lotteryInfoReader") 
    @StepScope 
    public RepositoryItemReader<LotteryInfo> reader() { 
     RepositoryItemReader<LotteryInfo> reader = new RepositoryItemReader<>(); 
     reader.setRepository(lotteryInfoRepository); 
     reader.setMethodName("findAll"); 
     reader.setSort(Collections.singletonMap("name", Sort.Direction.ASC)); 
     return reader; 
    } 

下面是使用Hibernate无弹簧数据的另一个例子:

@Bean(name = "drawsWriter") 
    @StepScope 
    public ItemWriter<? super List<Draw>> writer() { 
     return items -> items.stream() 
       .flatMap(Collection::stream) 
       .forEach(entityManager::merge); 
    }