GenericParameterSetter.java

package org.itsallcode.jdbc;

import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.*;

/**
 * This {@link PreparedStatement} uses
 * {@link PreparedStatement#setObject(int, Object)} to set parameters from a
 * {@link List}.
 */
class GenericParameterSetter implements PreparedStatementSetter {

    private final List<Object> parameters;

    GenericParameterSetter(final List<Object> parameters) {
        Objects.requireNonNull(parameters, "parameters");
        this.parameters = new ArrayList<>(parameters);
    }

    @Override
    public void setValues(final PreparedStatement preparedStatement) throws SQLException {
        for (int i = 0; i < parameters.size(); i++) {
            preparedStatement.setObject(i + 1, parameters.get(i));
        }
    }
}