Class PreparedBatch

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, Configurable<PreparedBatch>, ResultBearing

    public class PreparedBatch
    extends SqlStatement<PreparedBatch>
    implements ResultBearing
    Represents a prepared batch statement. Multiple bindings are added to the compiled statement and then executed in a single operation. This is, generally, a very efficient way to execute large numbers of the same statement where the statement only varies by the arguments bound to it. The statement starts with an empty binding. You bind a single batch of parameters with the usual SqlStatement binding methods, and then call add() to add the current binding as a batch and then clear it. An entire batch can be bound and added in one go with add(Map) or add(Object...).
    • Constructor Detail

      • PreparedBatch

        public PreparedBatch​(Handle handle,
                             java.lang.CharSequence sql)
    • Method Detail

      • buildArgument

        java.util.function.Function<java.lang.Object,​Argument> buildArgument​(QualifiedType<?> type)
      • scanResultSet

        public <R> R scanResultSet​(ResultSetScanner<R> resultSetScanner)
        Description copied from interface: ResultBearing
        Invokes the mapper with a result set supplier, and returns the value returned by the mapper.
        Specified by:
        scanResultSet in interface ResultBearing
        Type Parameters:
        R - result type returned by the mapper.
        Parameters:
        resultSetScanner - result set scanner
        Returns:
        the value returned by the mapper.
      • execute

        public int[] execute()
        Execute the batch and return the number of rows affected for each batch part. Note that some database drivers might return special values like Statement.SUCCESS_NO_INFO or Statement.EXECUTE_FAILED.
        Returns:
        the number of rows affected per batch part
        See Also:
        Statement.executeBatch()
      • executeAndGetModCount

        public ResultIterator<java.lang.Integer> executeAndGetModCount()
        Execute the batch and return the mod counts as in execute, but as a Jdbi result iterator instead of an array.
        Returns:
        the number of rows affected per batch part
        See Also:
        execute(), Statement.executeBatch()
      • executeAndReturnGeneratedKeys

        @Deprecated
        public ResultBearing executeAndReturnGeneratedKeys​(java.lang.String... columnNames)
        Deprecated.
        Use executePreparedBatch(String...) which has the same functionality but also returns the per-batch modified row counts.
        Execute the batch and give access to any generated keys returned by the operation.
        Parameters:
        columnNames - The column names for generated keys.
        Returns:
        A ResultBearing object that can be used to access the results of the batch.
      • executePreparedBatch

        public BatchResultBearing executePreparedBatch​(java.lang.String... columnNames)
        Execute the batch and give access to any generated keys returned by the operation.
        Parameters:
        columnNames - The column names for generated keys.
        Returns:
        A BatchResultBearing object that can be used to access the results of the batch and the per-batch modified row counts.
      • execute

        public <R> R execute​(ResultProducer<R> producer)
        Executes the batch, returning the result obtained from the given ResultProducer.
        Type Parameters:
        R - the type of the result
        Parameters:
        producer - the result producer.
        Returns:
        value returned by the result producer.
      • add

        public PreparedBatch add()
        Add the current binding as a saved batch and clear the binding.
        Returns:
        this
      • add

        public PreparedBatch add​(java.lang.Object... args)
        Bind arguments positionally, add the binding as a saved batch, and then clear the current binding.
        Parameters:
        args - the positional arguments to bind
        Returns:
        this
      • add

        public PreparedBatch add​(java.util.Map<java.lang.String,​?> args)
        Bind arguments from a Map, add the binding as a saved batch, then clear the current binding.
        Parameters:
        args - map to bind arguments from for named parameters on the statement
        Returns:
        this
      • size

        public int size()
        Returns the number of bindings in this batch.
        Returns:
        the number of bindings in this batch.