Potrzebuję wstawić tysiące rekordów w bazie danych za jednym razem. Korzystam ze sprężynowego szablonu JDBC w mojej aplikacji.Jak wykonać wiele wstawek w bazie danych za pomocą wiosennego pliku szablonu JDBC?
Poniżej znajduje się kod, który napisałem do tej pory, który wykonuje wszystkie wkładki za jednym razem. Tak więc, jeśli mam 10 000 użytkowników, są one wstawiane za jednym razem. Ale chcę je wykonać w partiach, powiedzmy na przykład 500 rekordów w jednej partii i tak dalej.
@Override
public void saveBatch(final List<Employee> employeeList) {
final int batchSize = 500;
getJdbcTemplate().batchUpdate(QUERY_SAVE,
new BatchPreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps, int i)
throws SQLException {
Employee employee = employeeList.get(i);
ps.setString(1, employee.getFirstname());
ps.setString(2, employee.getLastname());
ps.setString(3, employee.getEmployeeIdOnSourceSystem());
}
@Override
public int getBatchSize() {
return employeeList.size();
}
});
}
Jak mogę zmienić powyższy kod tak, że zamiast employeeList.size() jako wielkości partii możemy mieć wielkość wsadu jak powiedzieć 500, a następnie wykonać je obok 500 i tak dalej?
Proszę o pomoc.
Wiem, że to pytanie jest dość stary, ale mam pytanie. Dlaczego po prostu nie zwróciłeś 500 w metodzie 'getBatchSize'? –