public interface

NamedParameterJdbcOperations

org.springframework.jdbc.core.namedparam.NamedParameterJdbcOperations
Known Indirect Subclasses

Class Overview

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.

Summary

Public Methods
abstract int[] batchUpdate(String sql, SqlParameterSource[] batchArgs)
Execute a batch using the supplied SQL statement with the batch of supplied arguments.
abstract int[] batchUpdate(String sql, Map[]<String, ?> batchValues)
Executes a batch using the supplied SQL statement with the batch of supplied arguments.
abstract <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.
abstract <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.
abstract JdbcOperations getJdbcOperations()
Expose the classic Spring JdbcTemplate to allow invocation of classic JDBC operations.
abstract <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.
abstract <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.
abstract <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.
abstract <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.
abstract 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.
abstract 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.
abstract 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.
abstract 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.
abstract <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.
abstract List<Map<StringObject>> 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.
abstract List<Map<StringObject>> 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.
abstract <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.
abstract 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.
abstract 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.
abstract Map<StringObject> 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.
abstract Map<StringObject> 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.
abstract <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.
abstract <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.
abstract <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.
abstract <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.
abstract 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.
abstract 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.
abstract int update(String sql, SqlParameterSource paramSource, KeyHolder generatedKeyHolder, String[] keyColumnNames)
Issue an update via a prepared statement, binding the given arguments, returning generated keys.
abstract int update(String sql, Map<String, ?> paramMap)
Issue an update via a prepared statement, binding the given arguments.
abstract int update(String sql, SqlParameterSource paramSource)
Issue an update via a prepared statement, binding the given arguments.
abstract int update(String sql, SqlParameterSource paramSource, KeyHolder generatedKeyHolder)
Issue an update via a prepared statement, binding the given arguments, returning generated keys.

Public Methods

public abstract 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

public abstract 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

public abstract T execute (String sql, SqlParameterSource paramSource, PreparedStatementCallback<T> action)

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

public abstract 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. 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

public abstract JdbcOperations getJdbcOperations ()

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

public abstract 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.

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

public abstract 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.

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

public abstract 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.

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

public abstract 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.

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

public abstract 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.

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

public abstract 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.

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

public abstract 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.

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

public abstract 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.

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

public abstract 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.

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

public abstract List<Map<StringObject>> 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.

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

public abstract List<Map<StringObject>> 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.

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

public abstract 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.

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

public abstract 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.

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

public abstract 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.

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

public abstract Map<StringObject> 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.

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

public abstract Map<StringObject> 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. 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

public abstract 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.

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

public abstract 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.

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

public abstract 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.

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

public abstract 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.

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

public abstract 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.

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

public abstract 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.

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

public abstract int update (String sql, SqlParameterSource paramSource, KeyHolder generatedKeyHolder, String[] keyColumnNames)

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

public abstract int update (String sql, Map<String, ?> paramMap)

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

public abstract int update (String sql, SqlParameterSource paramSource)

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

public abstract int update (String sql, SqlParameterSource paramSource, KeyHolder generatedKeyHolder)

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