CompositeItemWriter с помощью вставки делегатов (JdbcBatchItemWriter) в 2 таблицы с отношением FK
Я использую весеннюю партию с аннотацией java.
Этот пакет требуется прочитать файл, обработать и вставить в таблицу.
В основном я сделалitemReader
, itemProcessor
а также userItemWriter
с commit-interval
равно 1.
У меня вопрос:
- Как вставить ПК из
User
стол кUserDetail
Таблица?
@Bean
public UserItemWriter userItemWriter() {
UserItemWriter itemWriter = new UserItemWriter();
List<ItemWriter<? super UserBO>> delegates = new ArrayList<>();
delegates.add( userDelegates() );
delegates.add( userDetailDelegates() );
itemWriter.setDelegates( delegates );
return itemWriter;
}
@Bean
public JdbcBatchItemWriter<UserBO> userDelegates() {
JdbcBatchItemWriter<UserBO> jdbcWriter = new JdbcBatchItemWriter<>();
jdbcWriter.setDataSource( databaseConfig.dataSource() );
jdbcWriter.setItemPreparedStatementSetter( new UserPreparedStmtSetter() );
jdbcWriter.setSql( UserItemWriter.I_USER_SQL );
return jdbcWriter;
}
@Bean
public JdbcBatchItemWriter<UserBO> userDetailDelegates() {
JdbcBatchItemWriter<UserBO> jdbcWriter = new JdbcBatchItemWriter<>();
jdbcWriter.setDataSource( databaseConfig.dataSource() );
jdbcWriter.setItemPreparedStatementSetter( new UserDetailPreparedStmtSetter() );
jdbcWriter.setSql( UserItemWriter.I_USERDETAIL_SQL );
return jdbcWriter;
}
SQL:
public static final String I_USER_SQL = "INSERT INTO USER(USERID, NAME, STATUS)VALUES(USER_IDSEQ.NEXTVAL,?,?)";
public static final String I_USER_DETAIL_SQL = "INSERT INTO USERDETAIL(USERDETAILID,ADDRESS1,USERID)VALUES(USERDETAIL_IDSEQ.NEXTVAL,?,?)";