## org.springframework.jdbc.core.namedparam
Interface NamedParameterJdbcOperations

All Known Implementing Classes:
  NamedParameterJdbcTemplate

    public interface NamedParameterJdbcOperations

Interface specifying a basic set of JDBC operations allowing the use of named parameters rather than the traditional '?' placeholders.

This is an alternative to the classic `JdbcOperations` interface, implemented by `NamedParameterJdbcTemplate`. This interface is not often used directly, but provides a useful option to enhance testability, as it can easily be mocked or stubbed.

Since:
  2.0
Author:
  Thomas Risberg, Juergen Hoeller
See Also:
  `NamedParameterJdbcTemplate`, `JdbcOperations`

Method Summary
`int[]` `batchUpdate(String sql, Map<String,?>[] batchValues)` Executes a batch using the supplied SQL statement with the batch of supplied arguments.
`int[]` `batchUpdate(String sql, SqlParameterSource[] batchArgs)` Execute a batch using the supplied SQL statement with the batch of supplied arguments.

`

`<T> T`

`

`execute(String sql, Map<String,?> paramMap, PreparedStatementCallback<T> action)`
Execute a JDBC data access operation, implemented as callback action working on a JDBC PreparedStatement.

`

`<T> T`

`

`execute(String sql, SqlParameterSource paramSource, PreparedStatementCallback<T> action)`
Execute a JDBC data access operation, implemented as callback action working on a JDBC PreparedStatement.

`JdbcOperations` `getJdbcOperations()` Expose the classic Spring JdbcTemplate to allow invocation of classic JDBC operations.

`

`<T> T`

`

`query(String sql, Map<String,?> paramMap, ResultSetExtractor<T> rse)`
Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, reading the ResultSet with a ResultSetExtractor.

`void` `query(String sql, Map<String,?> paramMap, RowCallbackHandler rch)` Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, reading the ResultSet on a per-row basis with a RowCallbackHandler.

`

`<T> List<T>`

`

`query(String sql, Map<String,?> paramMap, RowMapper<T> rowMapper)`
Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, mapping each row to a Java object via a RowMapper.

`

`<T> T`

`

`query(String sql, SqlParameterSource paramSource, ResultSetExtractor<T> rse)`
Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, reading the ResultSet with a ResultSetExtractor.

`void` `query(String sql, SqlParameterSource paramSource, RowCallbackHandler rch)` Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, reading the ResultSet on a per-row basis with a RowCallbackHandler.

`

`<T> List<T>`

`

`query(String sql, SqlParameterSource paramSource, RowMapper<T> rowMapper)`
Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, mapping each row to a Java object via a RowMapper.

`int` `queryForInt(String sql, Map<String,?> paramMap)` Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, resulting in an int value.
`int` `queryForInt(String sql, SqlParameterSource paramSource)` Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, resulting in an int value.
`List<Map<String,Object>>` `queryForList(String sql, Map<String,?> paramMap)` Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, expecting a result list.

`

`<T> List<T>`

`

`queryForList(String sql, Map<String,?> paramMap, Class<T> elementType)`
Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, expecting a result list.

`List<Map<String,Object>>` `queryForList(String sql, SqlParameterSource paramSource)` Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, expecting a result list.

`

`<T> List<T>`

`

`queryForList(String sql, SqlParameterSource paramSource, Class<T> elementType)`
Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, expecting a result list.

`long` `queryForLong(String sql, Map<String,?> paramMap)` Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, resulting in a long value.
`long` `queryForLong(String sql, SqlParameterSource paramSource)` Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, resulting in a long value.
`Map<String,Object>` `queryForMap(String sql, Map<String,?> paramMap)` Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, expecting a result Map.
`Map<String,Object>` `queryForMap(String sql, SqlParameterSource paramSource)` Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, expecting a result Map.

`

`<T> T`

`

`queryForObject(String sql, Map<String,?> paramMap, Class<T> requiredType)`
Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, expecting a result object.

`

`<T> T`

`

`queryForObject(String sql, Map<String,?> paramMap, RowMapper<T> rowMapper)`
Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, mapping a single result row to a Java object via a RowMapper.

`

`<T> T`

`

`queryForObject(String sql, SqlParameterSource paramSource, Class<T> requiredType)`
Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, expecting a result object.

`

`<T> T`

`

`queryForObject(String sql, SqlParameterSource paramSource, RowMapper<T> rowMapper)`
Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, mapping a single result row to a Java object via a RowMapper.

`SqlRowSet` `queryForRowSet(String sql, Map<String,?> paramMap)` Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, expecting a SqlRowSet.
`SqlRowSet` `queryForRowSet(String sql, SqlParameterSource paramSource)` Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, expecting a SqlRowSet.
`int` `update(String sql, Map<String,?> paramMap)` Issue an update via a prepared statement, binding the given arguments.
`int` `update(String sql, SqlParameterSource paramSource)` Issue an update via a prepared statement, binding the given arguments.
`int` `update(String sql, SqlParameterSource paramSource, KeyHolder generatedKeyHolder)` Issue an update via a prepared statement, binding the given arguments, returning generated keys.
`int` `update(String sql, SqlParameterSource paramSource, KeyHolder generatedKeyHolder, String[] keyColumnNames)` Issue an update via a prepared statement, binding the given arguments, returning generated keys.

Method Detail

### getJdbcOperations

    JdbcOperations getJdbcOperations()

  Expose the classic Spring JdbcTemplate to allow invocation of classic JDBC operations.

### execute

    <T> T execute(String sql,
                  SqlParameterSource paramSource,
                  PreparedStatementCallback<T> action)
              throws DataAccessException

  Execute a JDBC data access operation, implemented as callback action working on a JDBC PreparedStatement. This allows for implementing arbitrary data access operations on a single Statement, within Spring's managed JDBC environment: that is, participating in Spring-managed transactions and converting JDBC SQLExceptions into Spring's DataAccessException hierarchy.

  The callback action can return a result object, for example a domain object or a collection of domain objects.

  Parameters:
    `sql` - SQL to execute
    `paramSource` - container of arguments to bind to the query
    `action` - callback object that specifies the action
  Returns:
    a result object returned by the action, or `null`
  Throws:
    `DataAccessException` - if there is any problem

### execute

    <T> T execute(String sql,
                  Map<String,?> paramMap,
                  PreparedStatementCallback<T> action)
              throws DataAccessException

  Execute a JDBC data access operation, implemented as callback action working on a JDBC PreparedStatement. This allows for implementing arbitrary data access operations on a single Statement, within Spring's managed JDBC environment: that is, participating in Spring-managed transactions and converting JDBC SQLExceptions into Spring's DataAccessException hierarchy.

  The callback action can return a result object, for example a domain object or a collection of domain objects.

  Parameters:
    `sql` - SQL to execute
    `paramMap` - map of parameters to bind to the query (leaving it to the PreparedStatement to guess the corresponding SQL type)
    `action` - callback object that specifies the action
  Returns:
    a result object returned by the action, or `null`
  Throws:
    `DataAccessException` - if there is any problem

### query

    <T> T query(String sql,
                SqlParameterSource paramSource,
                ResultSetExtractor<T> rse)
            throws DataAccessException

  Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, reading the ResultSet with a ResultSetExtractor.

  Parameters:
    `sql` - SQL query to execute
    `paramSource` - container of arguments to bind to the query
    `rse` - object that will extract results
  Returns:
    an arbitrary result object, as returned by the ResultSetExtractor
  Throws:
    `DataAccessException` - if the query fails

### query

    <T> T query(String sql,
                Map<String,?> paramMap,
                ResultSetExtractor<T> rse)
            throws DataAccessException

  Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, reading the ResultSet with a ResultSetExtractor.

  Parameters:
    `sql` - SQL query to execute
    `paramMap` - map of parameters to bind to the query (leaving it to the PreparedStatement to guess the corresponding SQL type)
    `rse` - object that will extract results
  Returns:
    an arbitrary result object, as returned by the ResultSetExtractor
  Throws:
    `DataAccessException` - if the query fails

### query

    void query(String sql,
               SqlParameterSource paramSource,
               RowCallbackHandler rch)
               throws DataAccessException

  Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, reading the ResultSet on a per-row basis with a RowCallbackHandler.

  Parameters:
    `sql` - SQL query to execute
    `paramSource` - container of arguments to bind to the query
    `rch` - object that will extract results, one row at a time
  Throws:
    `DataAccessException` - if the query fails

### query

    void query(String sql,
               Map<String,?> paramMap,
               RowCallbackHandler rch)
               throws DataAccessException

  Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, reading the ResultSet on a per-row basis with a RowCallbackHandler.

  Parameters:
    `sql` - SQL query to execute
    `paramMap` - map of parameters to bind to the query (leaving it to the PreparedStatement to guess the corresponding SQL type)
    `rch` - object that will extract results, one row at a time
  Throws:
    `DataAccessException` - if the query fails

### query

    <T> List<T> query(String sql,
                      SqlParameterSource paramSource,
                      RowMapper<T> rowMapper)
                  throws DataAccessException

  Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, mapping each row to a Java object via a RowMapper.

  Parameters:
    `sql` - SQL query to execute
    `paramSource` - container of arguments to bind to the query
    `rowMapper` - object that will map one object per row
  Returns:
    the result List, containing mapped objects
  Throws:
    `DataAccessException` - if the query fails

### query

    <T> List<T> query(String sql,
                      Map<String,?> paramMap,
                      RowMapper<T> rowMapper)
                  throws DataAccessException

  Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, mapping each row to a Java object via a RowMapper.

  Parameters:
    `sql` - SQL query to execute
    `paramMap` - map of parameters to bind to the query (leaving it to the PreparedStatement to guess the corresponding SQL type)
    `rowMapper` - object that will map one object per row
  Returns:
    the result List, containing mapped objects
  Throws:
    `DataAccessException` - if the query fails

### queryForObject

    <T> T queryForObject(String sql,
                         SqlParameterSource paramSource,
                         RowMapper<T> rowMapper)
                     throws DataAccessException

  Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, mapping a single result row to a Java object via a RowMapper.

  Parameters:
    `sql` - SQL query to execute
    `paramSource` - container of arguments to bind to the query
    `rowMapper` - object that will map one object per row
  Returns:
    the single mapped object
  Throws:
    `IncorrectResultSizeDataAccessException` - if the query does not return exactly one row, or does not return exactly one column in that row
    `DataAccessException` - if the query fails

### queryForObject

    <T> T queryForObject(String sql,
                         Map<String,?> paramMap,
                         RowMapper<T> rowMapper)
                     throws DataAccessException

  Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, mapping a single result row to a Java object via a RowMapper.

  Parameters:
    `sql` - SQL query to execute
    `paramMap` - map of parameters to bind to the query (leaving it to the PreparedStatement to guess the corresponding SQL type)
    `rowMapper` - object that will map one object per row
  Returns:
    the single mapped object
  Throws:
    `IncorrectResultSizeDataAccessException` - if the query does not return exactly one row, or does not return exactly one column in that row
    `DataAccessException` - if the query fails

### queryForObject

    <T> T queryForObject(String sql,
                         SqlParameterSource paramSource,
                         Class<T> requiredType)
                     throws DataAccessException

  Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, expecting a result object.

  The query is expected to be a single row/single column query; the returned result will be directly mapped to the corresponding object type.

  Parameters:
    `sql` - SQL query to execute
    `paramSource` - container of arguments to bind to the query
    `requiredType` - the type that the result object is expected to match
  Returns:
    the result object of the required type, or `null` in case of SQL NULL
  Throws:
    `IncorrectResultSizeDataAccessException` - if the query does not return exactly one row, or does not return exactly one column in that row
    `DataAccessException` - if the query fails
  See Also:
    `JdbcTemplate.queryForObject(String, Class)`

### queryForObject

    <T> T queryForObject(String sql,
                         Map<String,?> paramMap,
                         Class<T> requiredType)
                     throws DataAccessException

  Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, expecting a result object.

  The query is expected to be a single row/single column query; the returned result will be directly mapped to the corresponding object type.

  Parameters:
    `sql` - SQL query to execute
    `paramMap` - map of parameters to bind to the query (leaving it to the PreparedStatement to guess the corresponding SQL type)
    `requiredType` - the type that the result object is expected to match
  Returns:
    the result object of the required type, or `null` in case of SQL NULL
  Throws:
    `IncorrectResultSizeDataAccessException` - if the query does not return exactly one row, or does not return exactly one column in that row
    `DataAccessException` - if the query fails
  See Also:
    `JdbcTemplate.queryForObject(String, Class)`

### queryForMap

    Map<String,Object> queryForMap(String sql,
                                   SqlParameterSource paramSource)
                                   throws DataAccessException

  Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, expecting a result Map.

  The query is expected to be a single row query; the result row will be mapped to a Map (one entry for each column, using the column name as the key).

  Parameters:
    `sql` - SQL query to execute
    `paramSource` - container of arguments to bind to the query
  Returns:
    the result Map (one entry for each column, using the column name as the key)
  Throws:
    `IncorrectResultSizeDataAccessException` - if the query does not return exactly one row, or does not return exactly one column in that row
    `DataAccessException` - if the query fails
  See Also:
    `JdbcTemplate.queryForMap(String)`, `ColumnMapRowMapper`

### queryForMap

    Map<String,Object> queryForMap(String sql,
                                   Map<String,?> paramMap)
                                   throws DataAccessException

  Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, expecting a result Map. The queryForMap() methods defined by this interface are appropriate when you don't have a domain model. Otherwise, consider using one of the queryForObject() methods.

  The query is expected to be a single row query; the result row will be mapped to a Map (one entry for each column, using the column name as the key).

  Parameters:
    `sql` - SQL query to execute
    `paramMap` - map of parameters to bind to the query (leaving it to the PreparedStatement to guess the corresponding SQL type)
  Returns:
    the result Map (one entry for each column, using the column name as the key)
  Throws:
    `IncorrectResultSizeDataAccessException` - if the query does not return exactly one row, or does not return exactly one column in that row
    `DataAccessException` - if the query fails
  See Also:
    `JdbcTemplate.queryForMap(String)`, `ColumnMapRowMapper`

### queryForLong

    long queryForLong(String sql,
                      SqlParameterSource paramSource)
                      throws DataAccessException

  Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, resulting in a long value.

  The query is expected to be a single row/single column query that results in a long value.

  Parameters:
    `sql` - SQL query to execute
    `paramSource` - container of arguments to bind to the query
  Returns:
    the long value, or 0 in case of SQL NULL
  Throws:
    `IncorrectResultSizeDataAccessException` - if the query does not return exactly one row, or does not return exactly one column in that row
    `DataAccessException` - if the query fails
  See Also:
    `JdbcTemplate.queryForLong(String)`

### queryForLong

    long queryForLong(String sql,
                      Map<String,?> paramMap)
                      throws DataAccessException

  Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, resulting in a long value.

  The query is expected to be a single row/single column query that results in a long value.

  Parameters:
    `sql` - SQL query to execute
    `paramMap` - map of parameters to bind to the query (leaving it to the PreparedStatement to guess the corresponding SQL type)
  Returns:
    the long value, or 0 in case of SQL NULL
  Throws:
    `IncorrectResultSizeDataAccessException` - if the query does not return exactly one row, or does not return exactly one column in that row
    `DataAccessException` - if the query fails
  See Also:
    `JdbcTemplate.queryForLong(String)`

### queryForInt

    int queryForInt(String sql,
                    SqlParameterSource paramSource)
                    throws DataAccessException

  Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, resulting in an int value.

  The query is expected to be a single row/single column query that results in an int value.

  Parameters:
    `sql` - SQL query to execute
    `paramSource` - container of arguments to bind to the query
  Returns:
    the int value, or 0 in case of SQL NULL
  Throws:
    `IncorrectResultSizeDataAccessException` - if the query does not return exactly one row, or does not return exactly one column in that row
    `DataAccessException` - if the query fails
  See Also:
    `JdbcTemplate.queryForInt(String)`

### queryForInt

    int queryForInt(String sql,
                    Map<String,?> paramMap)
                    throws DataAccessException

  Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, resulting in an int value.

  The query is expected to be a single row/single column query that results in an int value.

  Parameters:
    `sql` - SQL query to execute
    `paramMap` - map of parameters to bind to the query (leaving it to the PreparedStatement to guess the corresponding SQL type)
  Returns:
    the int value, or 0 in case of SQL NULL
  Throws:
    `IncorrectResultSizeDataAccessException` - if the query does not return exactly one row, or does not return exactly one column in that row
    `DataAccessException` - if the query fails
  See Also:
    `JdbcTemplate.queryForInt(String)`

### queryForList

    <T> List<T> queryForList(String sql,
                             SqlParameterSource paramSource,
                             Class<T> elementType)
                         throws DataAccessException

  Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, expecting a result list.

  The results will be mapped to a List (one entry for each row) of result objects, each of them matching the specified element type.

  Parameters:
    `sql` - SQL query to execute
    `paramSource` - container of arguments to bind to the query
    `elementType` - the required type of element in the result list (for example, `Integer.class`)
  Returns:
    a List of objects that match the specified element type
  Throws:
    `DataAccessException` - if the query fails
  See Also:
    `JdbcTemplate.queryForList(String, Class)`, `SingleColumnRowMapper`

### queryForList

    <T> List<T> queryForList(String sql,
                             Map<String,?> paramMap,
                             Class<T> elementType)
                         throws DataAccessException

  Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, expecting a result list.

  The results will be mapped to a List (one entry for each row) of result objects, each of them matching the specified element type.

  Parameters:
    `sql` - SQL query to execute
    `paramMap` - map of parameters to bind to the query (leaving it to the PreparedStatement to guess the corresponding SQL type)
    `elementType` - the required type of element in the result list (for example, `Integer.class`)
  Returns:
    a List of objects that match the specified element type
  Throws:
    `DataAccessException` - if the query fails
  See Also:
    `JdbcTemplate.queryForList(String, Class)`, `SingleColumnRowMapper`

### queryForList

    List<Map<String,Object>> queryForList(String sql,
                                          SqlParameterSource paramSource)
                                          throws DataAccessException

  Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, expecting a result list.

  The results will be mapped to a List (one entry for each row) of Maps (one entry for each column, using the column name as the key). Thus Each element in the list will be of the form returned by this interface's queryForMap() methods.

  Parameters:
    `sql` - SQL query to execute
    `paramSource` - container of arguments to bind to the query
  Returns:
    a List that contains a Map per row
  Throws:
    `DataAccessException` - if the query fails
  See Also:
    `JdbcTemplate.queryForList(String)`

### queryForList

    List<Map<String,Object>> queryForList(String sql,
                                          Map<String,?> paramMap)
                                          throws DataAccessException

  Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, expecting a result list.

  The results will be mapped to a List (one entry for each row) of Maps (one entry for each column, using the column name as the key). Each element in the list will be of the form returned by this interface's queryForMap() methods.

  Parameters:
    `sql` - SQL query to execute
    `paramMap` - map of parameters to bind to the query (leaving it to the PreparedStatement to guess the corresponding SQL type)
  Returns:
    a List that contains a Map per row
  Throws:
    `DataAccessException` - if the query fails
  See Also:
    `JdbcTemplate.queryForList(String)`

### queryForRowSet

    SqlRowSet queryForRowSet(String sql,
                             SqlParameterSource paramSource)
                             throws DataAccessException

  Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, expecting a SqlRowSet.

  The results will be mapped to an SqlRowSet which holds the data in a disconnected fashion. This wrapper will translate any SQLExceptions thrown.

  Note that that, for the default implementation, JDBC RowSet support needs to be available at runtime: by default, Sun's `com.sun.rowset.CachedRowSetImpl` class is used, which is part of JDK 1.5+ and also available separately as part of Sun's JDBC RowSet Implementations download (rowset.jar).

  Parameters:
    `sql` - SQL query to execute
    `paramSource` - container of arguments to bind to the query
  Returns:
    a SqlRowSet representation (possibly a wrapper around a `javax.sql.rowset.CachedRowSet`)
  Throws:
    `DataAccessException` - if there is any problem executing the query
  See Also:
    `JdbcTemplate.queryForRowSet(String)`, `SqlRowSetResultSetExtractor`, `CachedRowSet`

### queryForRowSet

    SqlRowSet queryForRowSet(String sql,
                             Map<String,?> paramMap)
                             throws DataAccessException

  Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, expecting a SqlRowSet.

  The results will be mapped to an SqlRowSet which holds the data in a disconnected fashion. This wrapper will translate any SQLExceptions thrown.

  Note that that, for the default implementation, JDBC RowSet support needs to be available at runtime: by default, Sun's `com.sun.rowset.CachedRowSetImpl` class is used, which is part of JDK 1.5+ and also available separately as part of Sun's JDBC RowSet Implementations download (rowset.jar).

  Parameters:
    `sql` - SQL query to execute
    `paramMap` - map of parameters to bind to the query (leaving it to the PreparedStatement to guess the corresponding SQL type)
  Returns:
    a SqlRowSet representation (possibly a wrapper around a `javax.sql.rowset.CachedRowSet`)
  Throws:
    `DataAccessException` - if there is any problem executing the query
  See Also:
    `JdbcTemplate.queryForRowSet(String)`, `SqlRowSetResultSetExtractor`, `CachedRowSet`

### update

    int update(String sql,
               SqlParameterSource paramSource)
               throws DataAccessException

  Issue an update via a prepared statement, binding the given arguments.

  Parameters:
    `sql` - SQL containing named parameters
    `paramSource` - container of arguments and SQL types to bind to the query
  Returns:
    the number of rows affected
  Throws:
    `DataAccessException` - if there is any problem issuing the update

### update

    int update(String sql,
               Map<String,?> paramMap)
               throws DataAccessException

  Issue an update via a prepared statement, binding the given arguments.

  Parameters:
    `sql` - SQL containing named parameters
    `paramMap` - map of parameters to bind to the query (leaving it to the PreparedStatement to guess the corresponding SQL type)
  Returns:
    the number of rows affected
  Throws:
    `DataAccessException` - if there is any problem issuing the update

### update

    int update(String sql,
               SqlParameterSource paramSource,
               KeyHolder generatedKeyHolder)
               throws DataAccessException

  Issue an update via a prepared statement, binding the given arguments, returning generated keys.

  Parameters:
    `sql` - SQL containing named parameters
    `paramSource` - container of arguments and SQL types to bind to the query
    `generatedKeyHolder` - KeyHolder that will hold the generated keys
  Returns:
    the number of rows affected
  Throws:
    `DataAccessException` - if there is any problem issuing the update
  See Also:
    `MapSqlParameterSource`, `GeneratedKeyHolder`

### update

    int update(String sql,
               SqlParameterSource paramSource,
               KeyHolder generatedKeyHolder,
               String[] keyColumnNames)
               throws DataAccessException

  Issue an update via a prepared statement, binding the given arguments, returning generated keys.

  Parameters:
    `sql` - SQL containing named parameters
    `paramSource` - container of arguments and SQL types to bind to the query
    `generatedKeyHolder` - KeyHolder that will hold the generated keys
    `keyColumnNames` - names of the columns that will have keys generated for them
  Returns:
    the number of rows affected
  Throws:
    `DataAccessException` - if there is any problem issuing the update
  See Also:
    `MapSqlParameterSource`, `GeneratedKeyHolder`

### batchUpdate

    int[] batchUpdate(String sql,
                      Map<String,?>[] batchValues)

  Executes a batch using the supplied SQL statement with the batch of supplied arguments.

  Parameters:
    `sql` - the SQL statement to execute
    `batchValues` - the array of Maps containing the batch of arguments for the query
  Returns:
    an array containing the numbers of rows affected by each update in the batch

### batchUpdate

    int[] batchUpdate(String sql,
                      SqlParameterSource[] batchArgs)

  Execute a batch using the supplied SQL statement with the batch of supplied arguments.

  Parameters:
    `sql` - the SQL statement to execute
    `batchArgs` - the array of `SqlParameterSource` containing the batch of arguments for the query
  Returns:
    an array containing the numbers of rows affected by each update in the batch