StatementBatchBuilder.java
package org.itsallcode.jdbc.batch;
import java.util.function.Supplier;
import org.itsallcode.jdbc.SimpleStatement;
/**
* A builder for {@link StatementBatch}.
*/
public class StatementBatchBuilder {
private final Supplier<SimpleStatement> statementFactory;
private int maxBatchSize = PreparedStatementBatchBuilder.DEFAULT_MAX_BATCH_SIZE;
/**
* Create a new instance.
*
* @param statementFactory factory for creating {@link SimpleStatement}.
*/
public StatementBatchBuilder(final Supplier<SimpleStatement> statementFactory) {
this.statementFactory = statementFactory;
}
/**
* Define maximum batch size, using
* {@link PreparedStatementBatchBuilder#DEFAULT_MAX_BATCH_SIZE} as default.
*
* @param maxBatchSize maximum batch size
* @return {@code this} for fluent programming
*/
public StatementBatchBuilder maxBatchSize(final int maxBatchSize) {
this.maxBatchSize = maxBatchSize;
return this;
}
/**
* Build the batch inserter.
*
* @return the statement batch
*/
public StatementBatch build() {
final SimpleStatement statement = statementFactory.get();
return new StatementBatch(statement, this.maxBatchSize);
}
}