org.springframework.jdbc.core

## Interface ConnectionCallback<T>

- Type Parameters:
    `T` - the result type
  Functional Interface:
    This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

      @FunctionalInterface
      public interface ConnectionCallback<T>

  Generic callback interface for code that operates on a JDBC Connection. Allows to execute any number of operations on a single Connection, using any type and number of Statements.

  This is particularly useful for delegating to existing data access code that expects a Connection to work on and throws SQLException. For newly written code, it is strongly recommended to use JdbcTemplate's more specific operations, for example a `query` or `update` variant.

  Since:
    1.1.3
  Author:
    Juergen Hoeller
  See Also:
    `JdbcTemplate.execute(ConnectionCallback)`, `JdbcTemplate.query(java.lang.String, org.springframework.jdbc.core.ResultSetExtractor<T>)`, `JdbcTemplate.update(java.lang.String)`

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `T` | `doInConnection(Connection con)` Gets called by `JdbcTemplate.execute` with an active JDBC Connection.

- - ### Method Detail

    - #### doInConnection

          @Nullable
          T doInConnection(Connection con)
                              throws SQLException,
                                     DataAccessException

      Gets called by `JdbcTemplate.execute` with an active JDBC Connection. Does not need to care about activating or closing the Connection, or handling transactions.

      If called without a thread-bound JDBC transaction (initiated by DataSourceTransactionManager), the code will simply get executed on the JDBC connection with its transactional semantics. If JdbcTemplate is configured to use a JTA-aware DataSource, the JDBC Connection and thus the callback code will be transactional if a JTA transaction is active.

      Allows for returning a result object created within the callback, i.e. a domain object or a collection of domain objects. Note that there's special support for single step actions: see `JdbcTemplate.queryForObject` etc. A thrown RuntimeException is treated as application exception: it gets propagated to the caller of the template.

      Parameters:
        `con` - active JDBC Connection
      Returns:
        a result object, or `null` if none
      Throws:
        `SQLException` - if thrown by a JDBC method, to be auto-converted to a DataAccessException by an SQLExceptionTranslator
        `DataAccessException` - in case of custom exceptions
      See Also:
        `JdbcTemplate.queryForObject(String, Class)`, `JdbcTemplate.queryForRowSet(String)`