如何编写Item writer来保存DB



如何编写Item writer来保存DB。

我正在使用spring-batch,在那里我可以创建一个自定义的IteamReader。现在我需要保存到数据库,但我没有在项目编写器中获得数据。

这是我的代码:

public class BatchConfig {
@Autowired
MyRepo myrepo;

@Bean
public ItemReader<MyDTO> itemReader() {
return new myItemReader();
}
@Bean
public ItemWriter<MyDTO> itemWriter() {
return new LoggingItemWriter();
}
@Bean
public Step exampleJobStep(ItemReader<MyDTO> reader,
ItemWriter<MyDTO> writer,
StepBuilderFactory stepBuilderFactory) {
return stepBuilderFactory.get("exampleJobStep")
.<MyDTO, MyDTO>chunk(1)
.reader(reader)
.writer(writer)
.build();
}
@Bean
public Job exampleJob(Step exampleJobStep,
JobBuilderFactory jobBuilderFactory) {
return jobBuilderFactory.get("exampleJob")
.incrementer(new RunIdIncrementer())
.flow(exampleJobStep)
.end()
.build();
}
}

现在我将向您展示itemreader和itemWriter代码。

项目阅读器:

public class myItemReader implements ItemReader<MyDTO> {

private int index;
private List<MyDTO> myData = new ArrayList<>();

InMemoryStudentReader() {
initialize();
}

private void initialize() {
for(int i=0; i<5; i++){
MyDTO newObj = new MyDTO();
newObj.setId(id) 
newObj.setName(firstName);
// some random setting values based on index...
myData.add(newObj);
index = 0;
}
}

@Override
public MyDTO read() throws Exception {
MyDTO nextDTO = null;

if (index < myData.size()) {
nextDTO = myData.get(index);
index++;
}
else {
index = 0;
}

return nextDTO;
}
}

ItemWriter;

public class LoggingItemWriter implements ItemWriter<AreaBoundaryDTO>{
private static final Logger LOGGER = LoggerFactory.getLogger(LoggingItemWriter.class);
public LoggingItemWriter() {
System.out.println("test");
}
@Override
public void write(List<? extends AreaBoundaryDTO> list) throws Exception {
for (MyDTO item : list) {
System.out.println("test"+list);
}
}
}

这里我想要的是,我想将数据保存在myrepo.save((中,其中数据是我在Iteamleader期间保存在myData中的myArray列表。

有人能帮我如何通过JPA存储库将我在itemreader中获得的这些数据保存到数据库中吗。

我正在遵循这个示例

您共享的代码不正确:读取器被定义为ItemReader<StudentDTO>,但读取方法返回另一种类型public MyDTO read()

Spring Batch提供了RepositoryItemWriter,它使用JPA存储库将项目持久化到数据库中。如果需要,可以扩展此内置编写器以自定义数据的持久化方式。

最新更新