2017-03-24 256 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); 
    }