我编写了一个返回对象列表的项目处理器。该对象需要拆分为 2 个数据库表(一个父和一个子)。一个标题行,对于这个对应的标题 ID,我们在子表中关联了子行。我使用 ListUnpackingItemWriter 示例来解决列表问题。我使用 CompositeItemWriter 将结果拆分为 2 个写入器,现在我需要将每个写入器拆分为标题和子表。现在每个作家都有相同的行数。有更好的方法吗?解决两个表主键问题。我需要示例编写自定义项目编写器,该编写器在插入之前进行验证。提前谢谢你。
下面是代码
public JdbcBatchItemWriter<T> myWriter() {
JdbcBatchItemWriter<T> myWriter = new JdbcBatchItemWriter<T>();
myWriter.setItemSqlParameterSourceProvider(new BeanPropertyItemSqlParameterSourceProvider<T>());
myWriter.setSql("INSERT INTO Parent table( colums) values ( values )");
myWriter.setDataSource(dataSource);
myWriter.afterPropertiesSet();
return myWriter;
}
public JdbcBatchItemWriter<T> myOtherWriter() {
JdbcBatchItemWriter<T> myWriter = new JdbcBatchItemWriter<T>(); 1
myWriter.setItemSqlParameterSourceProvider(new BeanPropertyItemSqlParameterSourceProvider<T>());
myWriter.setSql("INSERT INTO child table( colums) values ( values )");
myWriter.setDataSource(dataSource);
myWriter.afterPropertiesSet();
return myWriter;
}
public CompositeItemWriter<T> compositeItemWriter() {
CompositeItemWriter<T> writer = new CompositeItemWriter<T>();
writer.setDelegates(Arrays.asList(myWriter(),myOtherWriter()));
return writer;
}
```