org.springframework.jdbc.core.support

## Class AbstractInterruptibleBatchPreparedStatementSetter

- java.lang.Object
- - org.springframework.jdbc.core.support.AbstractInterruptibleBatchPreparedStatementSetter

- All Implemented Interfaces:
    BatchPreparedStatementSetter, InterruptibleBatchPreparedStatementSetter

      public abstract class AbstractInterruptibleBatchPreparedStatementSetter
      extends Object
      implements InterruptibleBatchPreparedStatementSetter

  Abstract implementation of the `InterruptibleBatchPreparedStatementSetter` interface, combining the check for available values and setting of those into a single callback method `setValuesIfAvailable(java.sql.PreparedStatement, int)`.
  Since:
    2.0
  Author:
    Juergen Hoeller
  See Also:
    `setValuesIfAvailable(java.sql.PreparedStatement, int)`

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `AbstractInterruptibleBatchPreparedStatementSetter()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `getBatchSize()` This implementation returns `Integer.MAX_VALUE`.
    `boolean` | `isBatchExhausted(int i)` This implementation return this instance's current exhaustion flag.
    `void` | `setValues(PreparedStatement ps, int i)` This implementation calls `setValuesIfAvailable(java.sql.PreparedStatement, int)` and sets this instance's exhaustion flag accordingly.
    `protected abstract boolean` | `setValuesIfAvailable(PreparedStatement ps, int i)` Check for available values and set them on the given PreparedStatement.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### AbstractInterruptibleBatchPreparedStatementSetter

          public AbstractInterruptibleBatchPreparedStatementSetter()

  - ### Method Detail

    - #### setValues

          public final void setValues(PreparedStatement ps,
                       int i)
                               throws SQLException

      This implementation calls `setValuesIfAvailable(java.sql.PreparedStatement, int)` and sets this instance's exhaustion flag accordingly.
      Specified by:
        `setValues` in interface `BatchPreparedStatementSetter`
      Parameters:
        `ps` - the PreparedStatement to invoke setter methods on
        `i` - index of the statement we're issuing in the batch, starting from 0
      Throws:
        `SQLException` - if a SQLException is encountered (i.e. there is no need to catch SQLException)

    - #### isBatchExhausted

          public final boolean isBatchExhausted(int i)

      This implementation return this instance's current exhaustion flag.
      Specified by:
        `isBatchExhausted` in interface `InterruptibleBatchPreparedStatementSetter`
      Parameters:
        `i` - index of the statement we're issuing in the batch, starting from 0
      Returns:
        whether the batch is already exhausted
      See Also:
        `BatchPreparedStatementSetter.setValues(java.sql.PreparedStatement, int)`, `setValuesIfAvailable(java.sql.PreparedStatement, int)`

    - #### getBatchSize

          public int getBatchSize()

      This implementation returns `Integer.MAX_VALUE`. Can be overridden in subclasses to lower the maximum batch size.
      Specified by:
        `getBatchSize` in interface `BatchPreparedStatementSetter`
      Returns:
        the number of statements in the batch

    - #### setValuesIfAvailable

          protected abstract boolean setValuesIfAvailable(PreparedStatement ps,
                                     int i)
                                                   throws SQLException

      Check for available values and set them on the given PreparedStatement. If no values are available anymore, return `false`.
      Parameters:
        `ps` - PreparedStatement we'll invoke setter methods on
        `i` - index of the statement we're issuing in the batch, starting from 0
      Returns:
        whether there were values to apply (that is, whether the applied parameters should be added to the batch and this method should be called for a further iteration)
      Throws:
        `SQLException` - if a SQLException is encountered (i.e. there is no need to catch SQLException)