RowPreparedStatementBatch.java
package org.itsallcode.jdbc.batch;
import org.itsallcode.jdbc.RowPreparedStatementSetter;
import org.itsallcode.jdbc.SimplePreparedStatement;
class RowPreparedStatementBatch<T> implements AutoCloseable {
private final PreparedStatementBatch batchInsert;
private final RowPreparedStatementSetter<T> preparedStatementSetter;
RowPreparedStatementBatch(final SimplePreparedStatement statement,
final RowPreparedStatementSetter<T> preparedStatementSetter,
final int maxBatchSize) {
this(new PreparedStatementBatch(statement, maxBatchSize), preparedStatementSetter);
}
RowPreparedStatementBatch(final PreparedStatementBatch batchInsert,
final RowPreparedStatementSetter<T> preparedStatementSetter) {
this.batchInsert = batchInsert;
this.preparedStatementSetter = preparedStatementSetter;
}
void add(final T row) {
batchInsert.add(stmt -> this.preparedStatementSetter.setValues(row, stmt));
}
@Override
public void close() {
this.batchInsert.close();
}
}