Package 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
Description
`AbstractInterruptibleBatchPreparedStatementSetter()`

## Method Summary

Modifier and Type
Method
Description
`int`
`getBatchSize()`
This implementation returns `Integer.MAX_VALUE`.
`final boolean`
`isBatchExhausted(int i)`
This implementation return this instance's current exhaustion flag.
`final 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 Details

### AbstractInterruptibleBatchPreparedStatementSetter

public AbstractInterruptibleBatchPreparedStatementSetter()

## Method Details

### 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 an 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` - the 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 an SQLException is encountered (i.e. there is no need to catch SQLException)