У меня есть такой SQL:
private final String SQL_INSERT_OR_UPDATE = "INSERT INTO currency_rate(currency_id, rate, update_date) " +
"SELECT currency.id, ?, ? " +
"FROM currency " +
"WHERE currency.code = ? " +
"ON DUPLICATE KEY UPDATE rate = ?";
И код в Java:
public int[] saveOrUpdate(List<String> codes, List<BigDecimal> rates, LocalDate date) {
return this.jdbcTemplate.batchUpdate(
SQL_INSERT_OR_UPDATE,
new BatchPreparedStatementSetter() {
public void setValues(@Nonnull PreparedStatement ps, int i) throws SQLException {
ps.setBigDecimal(1, rates.get(i));
ps.setDate(2, Date.valueOf(date));
ps.setString(3, codes.get(i));
ps.setBigDecimal(4, rates.get(i));
}
public int getBatchSize() {
return codes.size();
}
});
}
Теперь я хочу переписать этот код для использования NamedParameterJdbcTemplate
. Я знаю только один способ: пройти через мои списки и создавать объекты. Затем поместите эти объекты в список и создайте SqlParameterSource
. Но его много объектов, которые будут созданы. Есть ли другой способ использовать список, который у меня уже есть, и не создавать армию объектов?