Я использую подпружиненный пакет с java-аннотацией.
Этот пакет требуется для чтения файла, обработки и вставки в таблицу.
В основном я сделал itemReader
, itemProcessor
и userItemWriter
с commit-interval
равным 1.
Мой вопрос:
- Как вставить PK таблицы
User
в таблицу UserDetail
? 1011 *
@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,?,?)";