出处:apihome.cn 作者:apihome.cn 阅读:3864次
This is the central class in the JDBC core package. It simplifies the use of JDBC and helps to avoid common errors. It executes core JDBC workflow, leaving application code to provide SQL and extract results. This class executes SQL queries or updates, initiating iteration over ResultSets and catching JDBC exceptions and translating them to the generic, more informative exception hierarchy defined in the org.springframework.dao package.
Code using this class need only implement callback interfaces, giving them a clearly defined contract. The PreparedStatementCreator callback interface creates a prepared statement given a Connection, providing SQL and any necessary parameters. The ResultSetExtractor interface extracts values from a ResultSet. See also PreparedStatementSetter and RowMapper for two popular alternative callback interfaces.
Can be used within a service implementation via direct instantiation with a DataSource reference, or get prepared in an application context and given to services as bean reference. Note: The DataSource should always be configured as a bean in the application context, in the first case given to the service directly, in the second case to the prepared template.
Because this class is parameterizable by the callback interfaces and the SQLExceptionTranslator interface, there should be no need to subclass it.
All SQL operations performed by this class are logged at debug level, using "org.springframework.jdbc.core.JdbcTemplate" as log category.
Since: May 3, 2001 Author: Rod Johnson, Juergen Hoeller, Thomas Risberg See Also: PreparedStatementCreator, PreparedStatementSetter, CallableStatementCreator, PreparedStatementCallback, CallableStatementCallback, ResultSetExtractor, RowCallbackHandler, RowMapper, SQLExceptionTranslator
Field Summary Fields inherited from class org.springframework.jdbc.support.JdbcAccessorlogger Constructor SummaryJdbcTemplate() Construct a new JdbcTemplate for bean usage.JdbcTemplate(DataSource dataSource) Construct a new JdbcTemplate, given a DataSource to obtain connections from.JdbcTemplate(DataSource dataSource, boolean lazyInit) Construct a new JdbcTemplate, given a DataSource to obtain connections from. Method Summaryprotected voidapplyStatementSettings(Statement stmt) Prepare the given JDBC Statement (or PreparedStatement or CallableStatement), applying statement settings such as fetch size, max rows, and query timeout. int[]batchUpdate(String[] sql) Issue multiple SQL updates on a single JDBC Statement using batching. int[]batchUpdate(String sql, BatchPreparedStatementSetter pss) Issue multiple update statements on a single PreparedStatement, using batch updates and a BatchPreparedStatementSetter to set values. Mapcall(CallableStatementCreator csc, List declaredParameters) Execute a SQL call using a CallableStatementCreator to provide SQL and any required parameters.protected ConnectioncreateConnectionProxy(Connection con) Create a close-suppressing proxy for the given JDBC Connection.protected MapcreateResultsMap() Create a Map instance to be used as results map. Objectexecute(CallableStatementCreator csc, CallableStatementCallback action) Execute a JDBC data access operation, implemented as callback action working on a JDBC CallableStatement. Objectexecute(ConnectionCallback action) Execute a JDBC data access operation, implemented as callback action working on a JDBC Connection. Objectexecute(PreparedStatementCreator psc, PreparedStatementCallback action) Execute a JDBC data access operation, implemented as callback action working on a JDBC PreparedStatement. Objectexecute(StatementCallback action) Execute a JDBC data access operation, implemented as callback action working on a JDBC Statement. voidexecute(String sql) Issue a single SQL execute, typically a DDL statement. Objectexecute(String callString, CallableStatementCallback action) Execute a JDBC data access operation, implemented as callback action working on a JDBC CallableStatement. Objectexecute(String sql, PreparedStatementCallback action) Execute a JDBC data access operation, implemented as callback action working on a JDBC PreparedStatement.protected MapextractOutputParameters(CallableStatement cs, List parameters) Extract output parameters from the completed stored procedure.protected MapextractReturnedResults(CallableStatement cs, List updateCountParameters, List resultSetParameters, int updateCount) Extract returned ResultSets from the completed stored procedure.protected RowMappergetColumnMapRowMapper() Create a new RowMapper for reading columns as key-value pairs. intgetFetchSize() Return the fetch size specified for this JdbcTemplate. intgetMaxRows() Return the maximum number of rows specified for this JdbcTemplate. NativeJdbcExtractorgetNativeJdbcExtractor() Return the current NativeJdbcExtractor implementation. intgetQueryTimeout() Return the query timeout for statements that this JdbcTemplate executes.protected RowMappergetSingleColumnRowMapper(Class requiredType) Create a new RowMapper for reading result objects from a single column.protected voidhandleWarnings(SQLWarning warning) Throw an SQLWarningException if we're not ignoring warnings, else log the warnings (at debug level). booleanisIgnoreWarnings() Return whether or not we ignore SQLWarnings. booleanisResultsMapCaseInsensitive() Return whether execution of a CallableStatement will return the results in a Map that uses case insensitive names for the parameters. booleanisSkipResultsProcessing() Return whether results processing should be skipped. booleanisSkipUndeclaredResults() Return whether undeclared results should be skipped.protected MapprocessResultSet(ResultSet rs, ResultSetSupportingSqlParameter param) Process the given ResultSet from a stored procedure. Objectquery(PreparedStatementCreator psc, PreparedStatementSetter pss, ResultSetExtractor rse) Query using a prepared statement, allowing for a PreparedStatementCreator and a PreparedStatementSetter. Objectquery(PreparedStatementCreator psc, ResultSetExtractor rse) Query using a prepared statement, reading the ResultSet with a ResultSetExtractor. voidquery(PreparedStatementCreator psc, RowCallbackHandler rch) Query using a prepared statement, reading the ResultSet on a per-row basis with a RowCallbackHandler. Listquery(PreparedStatementCreator psc, RowMapper rowMapper) Query using a prepared statement, mapping each row to a Java object via a RowMapper. Objectquery(String sql, Object[] args, int[] argTypes, ResultSetExtractor 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. voidquery(String sql, Object[] args, int[] argTypes, 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. Listquery(String sql, Object[] args, int[] argTypes, RowMapper 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. Objectquery(String sql, Object[] args, ResultSetExtractor 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. voidquery(String sql, Object[] args, 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. Listquery(String sql, Object[] args, RowMapper 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. Objectquery(String sql, PreparedStatementSetter pss, ResultSetExtractor rse) Query using a prepared statement, reading the ResultSet with a ResultSetExtractor. voidquery(String sql, PreparedStatementSetter pss, RowCallbackHandler rch) Query given SQL to create a prepared statement from SQL and a PreparedStatementSetter implementation that knows how to bind values to the query, reading the ResultSet on a per-row basis with a RowCallbackHandler. Listquery(String sql, PreparedStatementSetter pss, RowMapper rowMapper) Query given SQL to create a prepared statement from SQL and a PreparedStatementSetter implementation that knows how to bind values to the query, mapping each row to a Java object via a RowMapper. Objectquery(String sql, ResultSetExtractor rse) Execute a query given static SQL, reading the ResultSet with a ResultSetExtractor. voidquery(String sql, RowCallbackHandler rch) Execute a query given static SQL, reading the ResultSet on a per-row basis with a RowCallbackHandler. Listquery(String sql, RowMapper rowMapper) Execute a query given static SQL, mapping each row to a Java object via a RowMapper. intqueryForInt(String sql) Execute a query that results in an int value, given static SQL. intqueryForInt(String sql, Object[] args) 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. intqueryForInt(String sql, Object[] args, int[] argTypes) 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. ListqueryForList(String sql) Execute a query for a result list, given static SQL. ListqueryForList(String sql, Class elementType) Execute a query for a result list, given static SQL. ListqueryForList(String sql, Object[] args) Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, expecting a result list. ListqueryForList(String sql, Object[] args, Class 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. ListqueryForList(String sql, Object[] args, int[] argTypes) Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, expecting a result list. ListqueryForList(String sql, Object[] args, int[] argTypes, Class 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. longqueryForLong(String sql) Execute a query that results in a long value, given static SQL. longqueryForLong(String sql, Object[] args) 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. longqueryForLong(String sql, Object[] args, int[] argTypes) 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. MapqueryForMap(String sql) Execute a query for a result Map, given static SQL. MapqueryForMap(String sql, Object[] args) Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, expecting a result Map. MapqueryForMap(String sql, Object[] args, int[] argTypes) Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, expecting a result Map. ObjectqueryForObject(String sql, Class requiredType) Execute a query for a result object, given static SQL. ObjectqueryForObject(String sql, Object[] args, Class 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. ObjectqueryForObject(String sql, Object[] args, int[] argTypes, Class 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. ObjectqueryForObject(String sql, Object[] args, int[] argTypes, RowMapper 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. ObjectqueryForObject(String sql, Object[] args, RowMapper 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. ObjectqueryForObject(String sql, RowMapper rowMapper) Execute a query given static SQL, mapping a single result row to a Java object via a RowMapper. SqlRowSetqueryForRowSet(String sql) Execute a query for a SqlRowSet, given static SQL. SqlRowSetqueryForRowSet(String sql, Object[] args) Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, expecting a SqlRowSet. SqlRowSetqueryForRowSet(String sql, Object[] args, int[] argTypes) Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, expecting a SqlRowSet. voidsetFetchSize(int fetchSize) Set the fetch size for this JdbcTemplate. voidsetIgnoreWarnings(boolean ignoreWarnings) Set whether or not we want to ignore SQLWarnings. voidsetMaxRows(int maxRows) Set the maximum number of rows for this JdbcTemplate. voidsetNativeJdbcExtractor(NativeJdbcExtractor extractor) Set a NativeJdbcExtractor to extract native JDBC objects from wrapped handles. voidsetQueryTimeout(int queryTimeout) Set the query timeout for statements that this JdbcTemplate executes. voidsetResultsMapCaseInsensitive(boolean resultsMapCaseInsensitive) Set whether execution of a CallableStatement will return the results in a Map that uses case insensitive names for the parameters. voidsetSkipResultsProcessing(boolean skipResultsProcessing) Set whether results processing should be skipped. voidsetSkipUndeclaredResults(boolean skipUndeclaredResults) Set whether undelared results should be skipped. intupdate(PreparedStatementCreator psc) Issue a single SQL update operation (such as an insert, update or delete statement) using a PreparedStatementCreator to provide SQL and any required parameters. intupdate(PreparedStatementCreator psc, KeyHolder generatedKeyHolder) Issue an update statement using a PreparedStatementCreator to provide SQL and any required parameters.protected intupdate(PreparedStatementCreator psc, PreparedStatementSetter pss) intupdate(String sql) Issue a single SQL update operation (such as an insert, update or delete statement). intupdate(String sql, Object[] args) Issue a single SQL update operation (such as an insert, update or delete statement) via a prepared statement, binding the given arguments. intupdate(String sql, Object[] args, int[] argTypes) Issue a single SQL update operation (such as an insert, update or delete statement) via a prepared statement, binding the given arguments. intupdate(String sql, PreparedStatementSetter pss) Issue an update statement using a PreparedStatementSetter to set bind parameters, with given SQL. Methods inherited from class org.springframework.jdbc.support.JdbcAccessorafterPropertiesSet, getDataSource, getExceptionTranslator, isLazyInit, setDatabaseProductName, setDataSource, setExceptionTranslator, setLazyInit Methods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Constructor Detail
Note: The DataSource has to be set before using the instance.
See Also: JdbcAccessor.setDataSource(javax.sql.DataSource)
Note: This will not trigger initialization of the exception translator.
Parameters: dataSource - the JDBC DataSource to obtain connections from
Note: Depending on the "lazyInit" flag, initialization of the exception translator will be triggered.
Parameters: dataSource - the JDBC DataSource to obtain connections from lazyInit - whether to lazily initialize the SQLExceptionTranslator Method Detail
Default is "true", swallowing and logging all warnings. Switch this flag to "false" to make the JdbcTemplate throw a SQLWarningException instead.
See Also: SQLWarning, SQLWarningException, handleWarnings(java.sql.SQLWarning)
Default is 0, indicating to use the JDBC driver's default.
See Also: Statement.setFetchSize(int)
Default is 0, indicating to use the JDBC driver's default.
See Also: Statement.setMaxRows(int)
Default is 0, indicating to use the JDBC driver's default.
Note: Any timeout specified here will be overridden by the remaining transaction timeout when executing within a transaction that has a timeout specified at the transaction level.
See Also: Statement.setQueryTimeout(int)
The callback action can return a result object, for example a domain object or a collection of domain objects.
Specified by: execute in interface JdbcOperations Parameters: action - the callback object that specifies the action Returns: a result object returned by the action, or null Throws: DataAccessException - if there is any problem
The proxy also prepares returned JDBC Statements, applying statement settings such as fetch size, max rows, and query timeout.
Parameters: con - the JDBC Connection to create a proxy for Returns: the Connection proxy See Also: Connection.close(), execute(ConnectionCallback), applyStatementSettings(java.sql.Statement)
The callback action can return a result object, for example a domain object or a collection of domain objects.
Specified by: execute in interface JdbcOperations Parameters: action - callback object that specifies the action Returns: a result object returned by the action, or null Throws: DataAccessException - if there is any problem
Specified by: execute in interface JdbcOperations Parameters: sql - static SQL to execute Throws: DataAccessException - if there is any problem
Uses a JDBC Statement, not a PreparedStatement. If you want to execute a static query with a PreparedStatement, use the overloaded query method with null as argument array.
Specified by: query in interface JdbcOperations Parameters: sql - SQL query to execute rse - object that will extract all rows of results Returns: an arbitrary result object, as returned by the ResultSetExtractor Throws: DataAccessException - if there is any problem executing the query See Also: JdbcOperations.query(String, Object[], ResultSetExtractor)
Uses a JDBC Statement, not a PreparedStatement. If you want to execute a static query with a PreparedStatement, use the overloaded query method with null as argument array.
Specified by: query in interface JdbcOperations Parameters: sql - SQL query to execute rch - object that will extract results, one row at a time Throws: DataAccessException - if there is any problem executing the query See Also: JdbcOperations.query(String, Object[], RowCallbackHandler)
Uses a JDBC Statement, not a PreparedStatement. If you want to execute a static query with a PreparedStatement, use the overloaded query method with null as argument array.
Specified by: query in interface JdbcOperations Parameters: sql - SQL query to execute rowMapper - object that will map one object per row Returns: the result List, containing mapped objects Throws: DataAccessException - if there is any problem executing the query See Also: JdbcOperations.query(String, Object[], RowMapper)
Uses a JDBC Statement, not a PreparedStatement. If you want to execute a static query with a PreparedStatement, use the overloaded queryForMap method with nullas argument array.
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).
Specified by: queryForMap in interface JdbcOperations Parameters: sql - SQL query to execute 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 DataAccessException - if there is any problem executing the query See Also: JdbcOperations.queryForMap(String, Object[]), ColumnMapRowMapper
Uses a JDBC Statement, not a PreparedStatement. If you want to execute a static query with a PreparedStatement, use the overloaded queryForObject method withnull as argument array.
Specified by: queryForObject in interface JdbcOperations Parameters: sql - SQL query to execute 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 DataAccessException - if there is any problem executing the query See Also: JdbcOperations.queryForObject(String, Object[], RowMapper)
Uses a JDBC Statement, not a PreparedStatement. If you want to execute a static query with a PreparedStatement, use the overloaded queryForObject method withnull as argument array.
This method is useful for running static SQL with a known outcome. The query is expected to be a single row/single column query; the returned result will be directly mapped to the corresponding object type.
Specified by: queryForObject in interface JdbcOperations Parameters: sql - SQL query to execute 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 there is any problem executing the query See Also: JdbcOperations.queryForObject(String, Object[], Class)
Uses a JDBC Statement, not a PreparedStatement. If you want to execute a static query with a PreparedStatement, use the overloaded queryForLong method with nullas argument array.
This method is useful for running static SQL with a known outcome. The query is expected to be a single row/single column query that results in a long value.
Specified by: queryForLong in interface JdbcOperations Parameters: sql - SQL query to execute 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 there is any problem executing the query See Also: JdbcOperations.queryForLong(String, Object[])
Uses a JDBC Statement, not a PreparedStatement. If you want to execute a static query with a PreparedStatement, use the overloaded queryForInt method with nullas argument array.
This method is useful for running static SQL with a known outcome. The query is expected to be a single row/single column query that results in an int value.
Specified by: queryForInt in interface JdbcOperations Parameters: sql - SQL query to execute 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 there is any problem executing the query See Also: JdbcOperations.queryForInt(String, Object[])
Uses a JDBC Statement, not a PreparedStatement. If you want to execute a static query with a PreparedStatement, use the overloaded queryForList method with nullas argument array.
The results will be mapped to a List (one entry for each row) of result objects, each of them matching the specified element type.
Specified by: queryForList in interface JdbcOperations Parameters: sql - SQL query to execute 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 there is any problem executing the query See Also: JdbcOperations.queryForList(String, Object[], Class), SingleColumnRowMapper
Uses a JDBC Statement, not a PreparedStatement. If you want to execute a static query with a PreparedStatement, use the overloaded queryForList method with nullas argument array.
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.
Specified by: queryForList in interface JdbcOperations Parameters: sql - SQL query to execute Returns: an List that contains a Map per row Throws: DataAccessException - if there is any problem executing the query See Also: JdbcOperations.queryForList(String, Object[])
Uses a JDBC Statement, not a PreparedStatement. If you want to execute a static query with a PreparedStatement, use the overloaded queryForRowSet method withnull as argument array.
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).
Specified by: queryForRowSet in interface JdbcOperations Parameters: sql - SQL query to execute 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: JdbcOperations.queryForRowSet(String, Object[]), SqlRowSetResultSetExtractor, CachedRowSet
Specified by: update in interface JdbcOperations Parameters: sql - static SQL to execute Returns: the number of rows affected Throws: DataAccessException - if there is any problem.
Will fall back to separate updates on a single Statement if the JDBC driver does not support batch updates.
Specified by: batchUpdate in interface JdbcOperations Parameters: sql - defining an array of SQL statements that will be executed. Returns: an array of the number of rows affected by each statement Throws: DataAccessException - if there is any problem executing the batch
The callback action can return a result object, for example a domain object or a collection of domain objects.
Specified by: execute in interface JdbcOperations Parameters: psc - object that can create a PreparedStatement given a Connection action - callback object that specifies the action Returns: a result object returned by the action, or null Throws: DataAccessException - if there is any problem
The callback action can return a result object, for example a domain object or a collection of domain objects.
Specified by: execute in interface JdbcOperations Parameters: sql - SQL to execute action - callback object that specifies the action Returns: a result object returned by the action, or null Throws: DataAccessException - if there is any problem
Parameters: psc - Callback handler that can create a PreparedStatement given a Connection pss - object that knows how to set values on the prepared statement. If this is null, the SQL will be assumed to contain no bind parameters. rse - object that will extract results. Returns: an arbitrary result object, as returned by the ResultSetExtractor Throws: DataAccessException - if there is any problem
A PreparedStatementCreator can either be implemented directly or configured through a PreparedStatementCreatorFactory.
Specified by: query in interface JdbcOperations Parameters: psc - object that can create a PreparedStatement given a Connection rse - object that will extract results Returns: an arbitrary result object, as returned by the ResultSetExtractor Throws: DataAccessException - if there is any problem See Also: PreparedStatementCreatorFactory
Specified by: query in interface JdbcOperations Parameters: sql - SQL query to execute pss - object that knows how to set values on the prepared statement. If this is null, the SQL will be assumed to contain no bind parameters. Even if there are no bind parameters, this object may be used to set fetch size and other performance options. rse - object that will extract results Returns: an arbitrary result object, as returned by the ResultSetExtractor Throws: DataAccessException - if there is any problem
Specified by: query in interface JdbcOperations Parameters: sql - SQL query to execute args - arguments to bind to the query argTypes - SQL types of the arguments (constants from java.sql.Types) rse - object that will extract results Returns: an arbitrary result object, as returned by the ResultSetExtractor Throws: DataAccessException - if the query fails See Also: Types
Specified by: query in interface JdbcOperations Parameters: sql - SQL query to execute args - arguments to bind to the query (leaving it to the PreparedStatement to guess the corresponding SQL type); may also contain SqlParameterValue objects which indicate not only the argument value but also the SQL type and optionally the scale rse - object that will extract results Returns: an arbitrary result object, as returned by the ResultSetExtractor Throws: DataAccessException - if the query fails
A PreparedStatementCreator can either be implemented directly or configured through a PreparedStatementCreatorFactory.
Specified by: query in interface JdbcOperations Parameters: psc - object that can create a PreparedStatement given a Connection rch - object that will extract results, one row at a time Throws: DataAccessException - if there is any problem See Also: PreparedStatementCreatorFactory
Specified by: query in interface JdbcOperations Parameters: sql - SQL query to execute pss - object that knows how to set values on the prepared statement. If this is null, the SQL will be assumed to contain no bind parameters. Even if there are no bind parameters, this object may be used to set fetch size and other performance options. rch - object that will extract results, one row at a time Throws: DataAccessException - if the query fails
Specified by: query in interface JdbcOperations Parameters: sql - SQL query to execute args - arguments to bind to the query argTypes - SQL types of the arguments (constants from java.sql.Types) rch - object that will extract results, one row at a time Throws: DataAccessException - if the query fails See Also: Types
Specified by: query in interface JdbcOperations Parameters: sql - SQL query to execute args - arguments to bind to the query (leaving it to the PreparedStatement to guess the corresponding SQL type); may also contain SqlParameterValue objects which indicate not only the argument value but also the SQL type and optionally the scale rch - object that will extract results, one row at a time Throws: DataAccessException - if the query fails
A PreparedStatementCreator can either be implemented directly or configured through a PreparedStatementCreatorFactory.
Specified by: query in interface JdbcOperations Parameters: psc - object that can create a PreparedStatement given a Connection rowMapper - object that will map one object per row Returns: the result List, containing mapped objects Throws: DataAccessException - if there is any problem See Also: PreparedStatementCreatorFactory
Specified by: query in interface JdbcOperations Parameters: sql - SQL query to execute pss - object that knows how to set values on the prepared statement. If this is null, the SQL will be assumed to contain no bind parameters. Even if there are no bind parameters, this object may be used to set fetch size and other performance options. rowMapper - object that will map one object per row Returns: the result List, containing mapped objects Throws: DataAccessException - if the query fails
Specified by: query in interface JdbcOperations Parameters: sql - SQL query to execute args - arguments to bind to the query argTypes - SQL types of the arguments (constants from java.sql.Types) rowMapper - object that will map one object per row Returns: the result List, containing mapped objects Throws: DataAccessException - if the query fails See Also: Types
Specified by: query in interface JdbcOperations Parameters: sql - SQL query to execute args - arguments to bind to the query (leaving it to the PreparedStatement to guess the corresponding SQL type); may also contain SqlParameterValue objects which indicate not only the argument value but also the SQL type and optionally the scale rowMapper - object that will map one object per row Returns: the result List, containing mapped objects Throws: DataAccessException - if the query fails
Specified by: queryForObject in interface JdbcOperations Parameters: sql - SQL query to execute args - arguments to bind to the query (leaving it to the PreparedStatement to guess the corresponding SQL type) argTypes - SQL types of the arguments (constants from java.sql.Types) 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 DataAccessException - if the query fails
Specified by: queryForObject in interface JdbcOperations Parameters: sql - SQL query to execute args - arguments to bind to the query (leaving it to the PreparedStatement to guess the corresponding SQL type); may also contain SqlParameterValue objects which indicate not only the argument value but also the SQL type and optionally the scale 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 DataAccessException - if the query fails
The query is expected to be a single row/single column query; the returned result will be directly mapped to the corresponding object type.
Specified by: queryForObject in interface JdbcOperations Parameters: sql - SQL query to execute args - arguments to bind to the query argTypes - SQL types of the arguments (constants from java.sql.Types) 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: JdbcOperations.queryForObject(String, Class), Types
The query is expected to be a single row/single column query; the returned result will be directly mapped to the corresponding object type.
Specified by: queryForObject in interface JdbcOperations Parameters: sql - SQL query to execute args - arguments to bind to the query (leaving it to the PreparedStatement to guess the corresponding SQL type); may also contain SqlParameterValue objects which indicate not only the argument value but also the SQL type and optionally the scale 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: JdbcOperations.queryForObject(String, Class)
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).
Specified by: queryForMap in interface JdbcOperations Parameters: sql - SQL query to execute args - arguments to bind to the query argTypes - SQL types of the arguments (constants from java.sql.Types) 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 DataAccessException - if the query fails See Also: JdbcOperations.queryForMap(String), ColumnMapRowMapper, Types
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).
Specified by: queryForMap in interface JdbcOperations Parameters: sql - SQL query to execute args - arguments to bind to the query (leaving it to the PreparedStatement to guess the corresponding SQL type); may also contain SqlParameterValue objects which indicate not only the argument value but also the SQL type and optionally the scale 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 DataAccessException - if the query fails See Also: JdbcOperations.queryForMap(String), ColumnMapRowMapper
The query is expected to be a single row/single column query that results in a long value.
Specified by: queryForLong in interface JdbcOperations Parameters: sql - SQL query to execute args - arguments to bind to the query argTypes - SQL types of the arguments (constants from java.sql.Types) 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: JdbcOperations.queryForLong(String), Types
The query is expected to be a single row/single column query that results in a long value.
Specified by: queryForLong in interface JdbcOperations Parameters: sql - SQL query to execute args - arguments to bind to the query (leaving it to the PreparedStatement to guess the corresponding SQL type); may also contain SqlParameterValue objects which indicate not only the argument value but also the SQL type and optionally the scale 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: JdbcOperations.queryForLong(String)
The query is expected to be a single row/single column query that results in an int value.
Specified by: queryForInt in interface JdbcOperations Parameters: sql - SQL query to execute args - arguments to bind to the query argTypes - SQL types of the arguments (constants from java.sql.Types) 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: JdbcOperations.queryForInt(String), Types
The query is expected to be a single row/single column query that results in an int value.
Specified by: queryForInt in interface JdbcOperations Parameters: sql - SQL query to execute args - arguments to bind to the query (leaving it to the PreparedStatement to guess the corresponding SQL type); may also contain SqlParameterValue objects which indicate not only the argument value but also the SQL type and optionally the scale 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: JdbcOperations.queryForInt(String)
The results will be mapped to a List (one entry for each row) of result objects, each of them matching the specified element type.
Specified by: queryForList in interface JdbcOperations Parameters: sql - SQL query to execute args - arguments to bind to the query argTypes - SQL types of the arguments (constants from java.sql.Types) 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: JdbcOperations.queryForList(String, Class), SingleColumnRowMapper
The results will be mapped to a List (one entry for each row) of result objects, each of them matching the specified element type.
Specified by: queryForList in interface JdbcOperations Parameters: sql - SQL query to execute args - arguments to bind to the query (leaving it to the PreparedStatement to guess the corresponding SQL type); may also contain SqlParameterValue objects which indicate not only the argument value but also the SQL type and optionally the scale 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: JdbcOperations.queryForList(String, Class), SingleColumnRowMapper
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.
Specified by: queryForList in interface JdbcOperations Parameters: sql - SQL query to execute args - arguments to bind to the query argTypes - SQL types of the arguments (constants from java.sql.Types) Returns: a List that contains a Map per row Throws: DataAccessException - if the query fails See Also: JdbcOperations.queryForList(String), Types
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.
Specified by: queryForList in interface JdbcOperations Parameters: sql - SQL query to execute args - arguments to bind to the query (leaving it to the PreparedStatement to guess the corresponding SQL type); may also contain SqlParameterValue objects which indicate not only the argument value but also the SQL type and optionally the scale Returns: a List that contains a Map per row Throws: DataAccessException - if the query fails See Also: JdbcOperations.queryForList(String)
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).
Specified by: queryForRowSet in interface JdbcOperations Parameters: sql - SQL query to execute args - arguments to bind to the query argTypes - SQL types of the arguments (constants from java.sql.Types) 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: JdbcOperations.queryForRowSet(String), SqlRowSetResultSetExtractor, CachedRowSet, Types
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).
Specified by: queryForRowSet in interface JdbcOperations Parameters: sql - SQL query to execute args - arguments to bind to the query (leaving it to the PreparedStatement to guess the corresponding SQL type); may also contain SqlParameterValue objects which indicate not only the argument value but also the SQL type and optionally the scale 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: JdbcOperations.queryForRowSet(String), SqlRowSetResultSetExtractor, CachedRowSet
A PreparedStatementCreator can either be implemented directly or configured through a PreparedStatementCreatorFactory.
Specified by: update in interface JdbcOperations Parameters: psc - object that provides SQL and any necessary parameters Returns: the number of rows affected Throws: DataAccessException - if there is any problem issuing the update See Also: PreparedStatementCreatorFactory
Note that the given PreparedStatementCreator has to create a statement with activated extraction of generated keys (a JDBC 3.0 feature). This can either be done directly or through using a PreparedStatementCreatorFactory.
Specified by: update in interface JdbcOperations Parameters: psc - object that provides SQL and any necessary parameters 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: PreparedStatementCreatorFactory, GeneratedKeyHolder
Specified by: update in interface JdbcOperations Parameters: sql - SQL containing bind parameters pss - helper that sets bind parameters. If this is null we run an update with static SQL. Returns: the number of rows affected Throws: DataAccessException - if there is any problem issuing the update
Specified by: update in interface JdbcOperations Parameters: sql - SQL containing bind parameters args - arguments to bind to the query argTypes - SQL types of the arguments (constants from java.sql.Types) Returns: the number of rows affected Throws: DataAccessException - if there is any problem issuing the update See Also: Types
Specified by: update in interface JdbcOperations Parameters: sql - SQL containing bind parameters args - arguments to bind to the query (leaving it to the PreparedStatement to guess the corresponding SQL type); may also contain SqlParameterValue objects which indicate not only the argument value but also the SQL type and optionally the scale Returns: the number of rows affected Throws: DataAccessException - if there is any problem issuing the update
Will fall back to separate updates on a single PreparedStatement if the JDBC driver does not support batch updates.
Specified by: batchUpdate in interface JdbcOperations Parameters: sql - defining PreparedStatement that will be reused. All statements in the batch will use the same SQL. pss - object to set parameters on the PreparedStatement created by this method Returns: an array of the number of rows affected by each statement Throws: DataAccessException - if there is any problem issuing the update
The callback action can return a result object, for example a domain object or a collection of domain objects.
Specified by: execute in interface JdbcOperations Parameters: csc - object that can create a CallableStatement given a Connection action - callback object that specifies the action Returns: a result object returned by the action, or null Throws: DataAccessException - if there is any problem
The callback action can return a result object, for example a domain object or a collection of domain objects.
Specified by: execute in interface JdbcOperations Parameters: callString - the SQL call string to execute action - callback object that specifies the action Returns: a result object returned by the action, or null Throws: DataAccessException - if there is any problem
Specified by: call in interface JdbcOperations Parameters: csc - object that provides SQL and any necessary parameters declaredParameters - list of declared SqlParameter objects Returns: Map of extracted out parameters Throws: DataAccessException - if there is any problem issuing the update
Parameters: cs - JDBC wrapper for the stored procedure updateCountParameters - Parameter list of declared update count parameters for the stored procedure resultSetParameters - Parameter list of declared resturn resultSet parameters for the stored procedure Returns: Map that contains returned results Throws: SQLException
Parameters: cs - JDBC wrapper for the stored procedure parameters - parameter list for the stored procedure Returns: Map that contains returned results Throws: SQLException
Parameters: rs - the ResultSet to process param - the corresponding stored procedure parameter Returns: Map that contains returned results Throws: SQLException
Returns: the RowMapper to use See Also: ColumnMapRowMapper
Parameters: requiredType - the type that each result object is expected to match Returns: the RowMapper to use See Also: SingleColumnRowMapper
If "isResultsMapCaseInsensitive" has been set to true, a linked case-insensitive Map will be created if possible, else a plain HashMap (see Spring's CollectionFactory).
Returns: the results Map instance See Also: setResultsMapCaseInsensitive(boolean), CollectionFactory.createLinkedCaseInsensitiveMapIfPossible(int)
Parameters: stmt - the JDBC Statement to prepare Throws: SQLException - if thrown by JDBC API See Also: setFetchSize(int), setMaxRows(int), setQueryTimeout(int), DataSourceUtils.applyTransactionTimeout(java.sql.Statement, javax.sql.DataSource)
Parameters: warning - the warnings object from the current statement.May be null, in which case this method does nothing. Throws: SQLWarningException - if not ignoring warnings See Also: SQLWarningException