Я бы рекомендовал использовать DAO для расширения JdbcTemplate.
У меня возникла проблема с использованием SimpleJdbcInsert (проблема DB2 drvier !!) в моем проекте, поэтому я, наконец, использовал этот код!
Вы можете реализовать свой собственный метод InsertAndReturnKey так:
public Number insertAndReturnKey(final Domain param) {
final String INSERT_SQL = "insert INTO " + DomainEnum.TABLE_NAME.value() +
" (" + DomainEnum.F1.value() + ","
+ DomainEnum.F2.value() + ","
+ DomainEnum.F3.value() + ","
+ DomainEnum.F4.value() + ","
+ DomainEnum.F5.value() + ","
+ DomainEnum.F6.value() + ","
+ DomainEnum.F7.value() + ") values(?,?,?,?,?,?,?)";
log.info(INSERT_SQL);
KeyHolder keyHolder = new GeneratedKeyHolder();
this.update(
new PreparedStatementCreator() {
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement ps =
connection.prepareStatement(INSERT_SQL, new String[] {SommaireReglementMetaData.ID.value()});
ps.setString(1, param.getF1());
ps.setString(2, param.getF2());
ps.setLong(3, param.getF3());
ps.setTimestamp(4, param.getF4());
ps.setString(5, param.getF5());
ps.setTimestamp(6, param.getF6());
ps.setTimestamp(7, param.getF7());
return ps;
}
},
keyHolder);
return keyHolder.getKey();
}
Так basicaly, вы можете использовать этот метод для вставки родителя. затем используйте batchUpdate для вставки всех дочерних элементов.
Вопрос: У вас много TABLE_A (родителей) или всего 1 и много записей TABLE_B?
Кроме того, я хотел упомянуть, что PK для TABLE_A представляет собой последовательность, которая генерируется автоматически. Следовательно, даже когда я пытаюсь использовать CompositeItemWriter, я не могу повторно использовать объект для следующих авторов таблиц. Однако я попытался сначала вставить данные для TABLE_A, используя simpleJdbcInsert, и получить значение PK, а затем использовать JDBCBatchWriter для записи других таблиц. Этот подход, кажется, требует больше времени, который поражает производительность, когда есть огромные записи. Цените, если вы думаете об этом. – skanda
Я реализую то же самое и придерживаюсь той же ситуации, если вы найдете какой-либо способ? – TaherT