Я использую шаблон Spring JDBC для массовой вставки данных в базу данных.Я могу сделать для положительной вставки, но застрял, чтобы определить сбойные записи, так как у меня есть сценарий для вставки сбойных записей в таблицу ошибок и положительных записей в другую таблицу.
Найдите приведенный ниже код, которыйя пытаюсь.**
final int batchSize = 5;
int[] resultCount = null;
for (int j = 0; j < bulkDataList.size(); j += batchSize) {
final List<BulkTest> batchList = bulkDataList.subList(j, j + batchSize > bulkDataList.size() ? bulkDataList.size() : j + batchSize);
try{
resultCount = jdbcTemplate.batchUpdate("INSERT INTO BULK_TEST VALUES (?, ?)",
new BatchPreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps, int i)
throws SQLException {
BulkTest bulkObj = batchList.get(i); ps.setString(1, bulkObj.getRowNo());
ps.setString(2, bulkObj.getName());
}
@Override
public int getBatchSize() {
return batchList.size();
}
});
}catch (Exception e) {
e.printStackTrace();
logger.info("Exception occured in batch update ==>");
if (e.getCause() instanceof BatchUpdateException) {
BatchUpdateException be = (BatchUpdateException) e.getCause();
int[] batchRes = be.getUpdateCounts();
if (batchRes != null && batchRes.length > 0) {
for (int index = 0; index < batchRes.length; index++) {
if (batchRes[index] == Statement.EXECUTE_FAILED) {
logger.error("Error execution >>>>>>>>>>>"
+ index + " --- , codeFail : " + batchRes[index]
+ "---, line " + bulkDataList.get(index));
}
}
}
}
}
}
logger.info("Final processed results ==>"+resultCount);
}
**
1) В операции массового пакетного обновления, если я получаю нулевой указатель или какое-либо исключение из ограничения БД, он выбрасывает класс исключения, а не BatchUpdateException.
Я знаю, что из BatchUpdateException мы можем получить ошибочные записи.
Пожалуйста, поделитесь кодом для идентификации успешно вставленных и неудачных записей.