public class

JdbcTemplate

extends JdbcAccessor
implements JdbcOperations
java.lang.Object
   ↳ org.springframework.jdbc.support.JdbcAccessor
     ↳ org.springframework.jdbc.core.JdbcTemplate

Class Overview

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.

Summary

[Expand]
Inherited Fields
From class org.springframework.jdbc.support.JdbcAccessor
Public Constructors
JdbcTemplate()
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.
Public Methods
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.
Map<StringObject> call(CallableStatementCreator csc, List<SqlParameter> declaredParameters)
Execute a SQL call using a CallableStatementCreator to provide SQL and any required parameters.
<T> T execute(PreparedStatementCreator psc, PreparedStatementCallback<T> action)
Execute a JDBC data access operation, implemented as callback action working on a JDBC PreparedStatement.
<T> T execute(ConnectionCallback<T> action)
Execute a JDBC data access operation, implemented as callback action working on a JDBC Connection.
<T> T execute(String sql, PreparedStatementCallback<T> action)
Execute a JDBC data access operation, implemented as callback action working on a JDBC PreparedStatement.
void execute(String sql)
Issue a single SQL execute, typically a DDL statement.
<T> T execute(StatementCallback<T> action)
Execute a JDBC data access operation, implemented as callback action working on a JDBC Statement.
<T> T execute(CallableStatementCreator csc, CallableStatementCallback<T> action)
Execute a JDBC data access operation, implemented as callback action working on a JDBC CallableStatement.
<T> T execute(String callString, CallableStatementCallback<T> action)
Execute a JDBC data access operation, implemented as callback action working on a JDBC CallableStatement.
int getFetchSize()
Return the fetch size specified for this JdbcTemplate.
int getMaxRows()
Return the maximum number of rows specified for this JdbcTemplate.
NativeJdbcExtractor getNativeJdbcExtractor()
Return the current NativeJdbcExtractor implementation.
int getQueryTimeout()
Return the query timeout for statements that this JdbcTemplate executes.
boolean isIgnoreWarnings()
Return whether or not we ignore SQLWarnings.
boolean isResultsMapCaseInsensitive()
Return whether execution of a CallableStatement will return the results in a Map that uses case insensitive names for the parameters.
boolean isSkipResultsProcessing()
Return whether results processing should be skipped.
boolean isSkipUndeclaredResults()
Return whether undeclared results should be skipped.
<T> T query(String sql, Object[] args, 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.
<T> T query(PreparedStatementCreator psc, PreparedStatementSetter pss, ResultSetExtractor<T> rse)
Query using a prepared statement, allowing for a PreparedStatementCreator and a PreparedStatementSetter.
<T> T query(String sql, ResultSetExtractor<T> rse, Object... args)
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.
<T> T query(String sql, Object[] args, int[] argTypes, 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.
<T> T query(PreparedStatementCreator psc, ResultSetExtractor<T> rse)
Query using a prepared statement, reading the ResultSet with a ResultSetExtractor.
void query(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.
<T> List<T> query(PreparedStatementCreator psc, RowMapper<T> rowMapper)
Query using a prepared statement, mapping each row to a Java object via a RowMapper.
<T> List<T> query(String sql, PreparedStatementSetter pss, RowMapper<T> 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.
void query(String sql, RowCallbackHandler rch)
Execute a query given static SQL, reading the ResultSet on a per-row basis with a RowCallbackHandler.
<T> T query(String sql, ResultSetExtractor<T> rse)
Execute a query given static SQL, reading the ResultSet with a ResultSetExtractor.
<T> List<T> query(String sql, RowMapper<T> rowMapper, Object... args)
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.
void query(PreparedStatementCreator psc, RowCallbackHandler rch)
Query using a prepared statement, reading the ResultSet on a per-row basis with a RowCallbackHandler.
void query(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.
<T> List<T> query(String sql, RowMapper<T> rowMapper)
Execute a query given static SQL, mapping each row to a Java object via a RowMapper.
void query(String sql, RowCallbackHandler rch, Object... args)
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, Object[] args, int[] argTypes, 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> List<T> query(String sql, Object[] args, 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, PreparedStatementSetter pss, ResultSetExtractor<T> rse)
Query using a prepared statement, reading the ResultSet with a ResultSetExtractor.
void query(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.
int queryForInt(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.
int queryForInt(String sql)
Execute a query that results in an int value, given static SQL.
int queryForInt(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.
<T> List<T> queryForList(String sql, Class<T> elementType, 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.
List<Map<StringObject>> queryForList(String sql)
Execute a query for a result list, given static SQL.
<T> List<T> queryForList(String sql, Object[] args, 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.
<T> List<T> queryForList(String sql, Class<T> elementType)
Execute a query for a result list, given static SQL.
List<Map<StringObject>> queryForList(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.
<T> List<T> queryForList(String sql, Object[] args, int[] argTypes, 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<StringObject>> queryForList(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.
long queryForLong(String sql)
Execute a query that results in a long value, given static SQL.
long queryForLong(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.
long queryForLong(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.
Map<StringObject> queryForMap(String sql)
Execute a query for a result Map, given static SQL.
Map<StringObject> queryForMap(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.
Map<StringObject> queryForMap(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.
<T> T queryForObject(String sql, RowMapper<T> rowMapper, Object... args)
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, RowMapper<T> rowMapper)
Execute a query given static SQL, mapping a single result row to a Java object via a RowMapper.
<T> T queryForObject(String sql, Object[] args, int[] argTypes, 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, Class<T> requiredType, 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 object.
<T> T queryForObject(String sql, Object[] args, 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, Object[] args, int[] argTypes, 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, Class<T> requiredType)
Execute a query for a result object, given static SQL.
<T> T queryForObject(String sql, Object[] args, 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, 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.
SqlRowSet queryForRowSet(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.
SqlRowSet queryForRowSet(String sql)
Execute a query for a SqlRowSet, given static SQL.
void setFetchSize(int fetchSize)
Set the fetch size for this JdbcTemplate.
void setIgnoreWarnings(boolean ignoreWarnings)
Set whether or not we want to ignore SQLWarnings.
void setMaxRows(int maxRows)
Set the maximum number of rows for this JdbcTemplate.
void setNativeJdbcExtractor(NativeJdbcExtractor extractor)
Set a NativeJdbcExtractor to extract native JDBC objects from wrapped handles.
void setQueryTimeout(int queryTimeout)
Set the query timeout for statements that this JdbcTemplate executes.
void setResultsMapCaseInsensitive(boolean resultsMapCaseInsensitive)
Set whether execution of a CallableStatement will return the results in a Map that uses case insensitive names for the parameters.
void setSkipResultsProcessing(boolean skipResultsProcessing)
Set whether results processing should be skipped.
void setSkipUndeclaredResults(boolean skipUndeclaredResults)
Set whether undelared results should be skipped.
int update(String sql)
Issue a single SQL update operation (such as an insert, update or delete statement).
int update(String sql, PreparedStatementSetter pss)
Issue an update statement using a PreparedStatementSetter to set bind parameters, with given SQL.
int update(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.
int update(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.
int update(PreparedStatementCreator psc, KeyHolder generatedKeyHolder)
Issue an update statement using a PreparedStatementCreator to provide SQL and any required parameters.
int update(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.
Protected Methods
void applyStatementSettings(Statement stmt)
Prepare the given JDBC Statement (or PreparedStatement or CallableStatement), applying statement settings such as fetch size, max rows, and query timeout.
Connection createConnectionProxy(Connection con)
Create a close-suppressing proxy for the given JDBC Connection.
Map<StringObject> createResultsMap()
Create a Map instance to be used as results map.
Map<StringObject> extractOutputParameters(CallableStatement cs, List<SqlParameter> parameters)
Extract output parameters from the completed stored procedure.
Map<StringObject> extractReturnedResults(CallableStatement cs, List updateCountParameters, List resultSetParameters, int updateCount)
Extract returned ResultSets from the completed stored procedure.
RowMapper<Map<StringObject>> getColumnMapRowMapper()
Create a new RowMapper for reading columns as key-value pairs.
<T> RowMapper<T> getSingleColumnRowMapper(Class<T> requiredType)
Create a new RowMapper for reading result objects from a single column.
void handleWarnings(SQLWarning warning)
Throw an SQLWarningException if encountering an actual warning.
void handleWarnings(Statement stmt)
Throw an SQLWarningException if we're not ignoring warnings, else log the warnings (at debug level).
PreparedStatementSetter newArgPreparedStatementSetter(Object[] args)
Create a new ArgPreparedStatementSetter using the args passed in.
PreparedStatementSetter newArgTypePreparedStatementSetter(Object[] args, int[] argTypes)
Create a new ArgTypePreparedStatementSetter using the args and argTypes passed in.
Map<StringObject> processResultSet(ResultSet rs, ResultSetSupportingSqlParameter param)
Process the given ResultSet from a stored procedure.
int update(PreparedStatementCreator psc, PreparedStatementSetter pss)
[Expand]
Inherited Methods
From class org.springframework.jdbc.support.JdbcAccessor
From class java.lang.Object
From interface org.springframework.beans.factory.InitializingBean
From interface org.springframework.jdbc.core.JdbcOperations

Public Constructors

public JdbcTemplate ()

Construct a new JdbcTemplate for bean usage.

Note: The DataSource has to be set before using the instance.

public JdbcTemplate (DataSource dataSource)

Construct a new JdbcTemplate, given a DataSource to obtain connections from.

Note: This will not trigger initialization of the exception translator.

Parameters
dataSource the JDBC DataSource to obtain connections from

public JdbcTemplate (DataSource dataSource, boolean lazyInit)

Construct a new JdbcTemplate, given a 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

Public Methods

public int[] batchUpdate (String[] sql)

Issue multiple SQL updates on a single JDBC Statement using batching.

Will fall back to separate updates on a single Statement if the JDBC driver does not support batch updates.

Parameters
sql defining an array of SQL statements that will be executed.
Returns
  • an array of the number of rows affected by each statement

public int[] batchUpdate (String sql, BatchPreparedStatementSetter pss)

Issue multiple update statements on a single PreparedStatement, using batch updates and a BatchPreparedStatementSetter to set values.

Will fall back to separate updates on a single PreparedStatement if the JDBC driver does not support batch updates.

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

public Map<StringObject> call (CallableStatementCreator csc, List<SqlParameter> declaredParameters)

Execute a SQL call using a CallableStatementCreator to provide SQL and any required parameters.

Parameters
csc object that provides SQL and any necessary parameters
declaredParameters list of declared SqlParameter objects
Returns
  • Map of extracted out parameters

public T execute (PreparedStatementCreator psc, 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
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

public T execute (ConnectionCallback<T> action)

Execute a JDBC data access operation, implemented as callback action working on a JDBC Connection. This allows for implementing arbitrary data access operations, 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
action the callback object that specifies the action
Returns
  • a result object returned by the action, or null

public T execute (String sql, 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
action callback object that specifies the action
Returns
  • a result object returned by the action, or null

public void execute (String sql)

Issue a single SQL execute, typically a DDL statement.

Parameters
sql static SQL to execute

public T execute (StatementCallback<T> action)

Execute a JDBC data access operation, implemented as callback action working on a JDBC Statement. 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
action callback object that specifies the action
Returns
  • a result object returned by the action, or null

public T execute (CallableStatementCreator csc, CallableStatementCallback<T> action)

Execute a JDBC data access operation, implemented as callback action working on a JDBC CallableStatement. 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
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

public T execute (String callString, CallableStatementCallback<T> action)

Execute a JDBC data access operation, implemented as callback action working on a JDBC CallableStatement. 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
callString the SQL call string to execute
action callback object that specifies the action
Returns
  • a result object returned by the action, or null

public int getFetchSize ()

Return the fetch size specified for this JdbcTemplate.

public int getMaxRows ()

Return the maximum number of rows specified for this JdbcTemplate.

public NativeJdbcExtractor getNativeJdbcExtractor ()

Return the current NativeJdbcExtractor implementation.

public int getQueryTimeout ()

Return the query timeout for statements that this JdbcTemplate executes.

public boolean isIgnoreWarnings ()

Return whether or not we ignore SQLWarnings.

public boolean isResultsMapCaseInsensitive ()

Return whether execution of a CallableStatement will return the results in a Map that uses case insensitive names for the parameters.

public boolean isSkipResultsProcessing ()

Return whether results processing should be skipped.

public boolean isSkipUndeclaredResults ()

Return whether undeclared results should be skipped.

public T query (String sql, Object[] args, 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
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

public T query (PreparedStatementCreator psc, PreparedStatementSetter pss, ResultSetExtractor<T> rse)

Query using a prepared statement, allowing for a PreparedStatementCreator and a PreparedStatementSetter. Most other query methods use this method, but application code will always work with either a creator or a setter.

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

public T query (String sql, ResultSetExtractor<T> rse, Object... args)

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
rse object that will extract results
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
  • an arbitrary result object, as returned by the ResultSetExtractor

public T query (String sql, Object[] args, int[] argTypes, 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
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

public T query (PreparedStatementCreator psc, ResultSetExtractor<T> rse)

Query using a prepared statement, reading the ResultSet with a ResultSetExtractor.

A PreparedStatementCreator can either be implemented directly or configured through a PreparedStatementCreatorFactory.

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

public void query (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.

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

public List<T> query (PreparedStatementCreator psc, RowMapper<T> rowMapper)

Query using a prepared statement, mapping each row to a Java object via a RowMapper.

A PreparedStatementCreator can either be implemented directly or configured through a PreparedStatementCreatorFactory.

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

public List<T> query (String sql, PreparedStatementSetter pss, RowMapper<T> 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.

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

public void query (String sql, RowCallbackHandler rch)

Execute a query given static SQL, reading the ResultSet on a per-row basis with a 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.

Parameters
sql SQL query to execute
rch object that will extract results, one row at a time

public T query (String sql, ResultSetExtractor<T> rse)

Execute a query given static SQL, reading the ResultSet with a 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.

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

public List<T> query (String sql, RowMapper<T> rowMapper, Object... args)

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
rowMapper object that will map one object per row
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 List, containing mapped objects

public void query (PreparedStatementCreator psc, RowCallbackHandler rch)

Query using a prepared statement, reading the ResultSet on a per-row basis with a RowCallbackHandler.

A PreparedStatementCreator can either be implemented directly or configured through a PreparedStatementCreatorFactory.

Parameters
psc object that can create a PreparedStatement given a Connection
rch object that will extract results, one row at a time

public void query (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.

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

public List<T> query (String sql, RowMapper<T> rowMapper)

Execute a query given static SQL, mapping each row to a Java object via a RowMapper.

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.

Parameters
sql SQL query to execute
rowMapper object that will map one object per row
Returns
  • the result List, containing mapped objects

public void query (String sql, RowCallbackHandler rch, Object... args)

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
rch object that will extract results, one row at a time
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

public List<T> query (String sql, Object[] args, int[] argTypes, 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
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

public List<T> query (String sql, Object[] args, 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
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

public T query (String sql, PreparedStatementSetter pss, ResultSetExtractor<T> rse)

Query using a prepared statement, reading the ResultSet with a ResultSetExtractor.

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

public void query (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.

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

public int queryForInt (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.

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

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

public int queryForInt (String sql)

Execute a query that results in an int value, given static SQL.

Uses a JDBC Statement, not a PreparedStatement. If you want to execute a static query with a PreparedStatement, use the overloaded queryForInt method with null 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 that results in an int value.

Parameters
sql SQL query to execute
Returns
  • the int value, or 0 in case of SQL NULL

public int queryForInt (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.

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

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

public List<T> queryForList (String sql, Class<T> elementType, 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.

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
elementType the required type of element in the result list (for example, Integer.class)
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 of objects that match the specified element type

public List<Map<StringObject>> queryForList (String sql)

Execute a query for a result list, given static SQL.

Uses a JDBC Statement, not a PreparedStatement. If you want to execute a static query with a PreparedStatement, use the overloaded queryForList method with null as 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.

Parameters
sql SQL query to execute
Returns
  • an List that contains a Map per row

public List<T> queryForList (String sql, Object[] args, 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
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

public List<T> queryForList (String sql, Class<T> elementType)

Execute a query for a result list, given static SQL.

Uses a JDBC Statement, not a PreparedStatement. If you want to execute a static query with a PreparedStatement, use the overloaded queryForList method with null as 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.

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

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

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

public List<T> queryForList (String sql, Object[] args, int[] argTypes, 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
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

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

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

public long queryForLong (String sql)

Execute a query that results in a long value, given static SQL.

Uses a JDBC Statement, not a PreparedStatement. If you want to execute a static query with a PreparedStatement, use the overloaded queryForLong method with null 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 that results in a long value.

Parameters
sql SQL query to execute
Returns
  • the long value, or 0 in case of SQL NULL

public long queryForLong (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.

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

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

public long queryForLong (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.

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

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

public Map<StringObject> queryForMap (String sql)

Execute a query for a result Map, given static SQL.

Uses a JDBC Statement, not a PreparedStatement. If you want to execute a static query with a PreparedStatement, use the overloaded queryForMap method with null as 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).

Parameters
sql SQL query to execute
Returns
  • the result Map (one entry for each column, using the column name as the key)

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

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
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)

public Map<StringObject> queryForMap (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. 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
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)

public T queryForObject (String sql, RowMapper<T> rowMapper, Object... args)

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
rowMapper object that will map one object per row
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 single mapped object

public T queryForObject (String sql, RowMapper<T> rowMapper)

Execute a query given static SQL, mapping a single result row to a Java object via a RowMapper.

Uses a JDBC Statement, not a PreparedStatement. If you want to execute a static query with a PreparedStatement, use the overloaded queryForObject method with null as argument array.

Parameters
sql SQL query to execute
rowMapper object that will map one object per row
Returns
  • the single mapped object

public T queryForObject (String sql, Object[] args, int[] argTypes, 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
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

public T queryForObject (String sql, Class<T> requiredType, 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 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
requiredType the type that the result object is expected to match
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 object of the required type, or null in case of SQL NULL

public T queryForObject (String sql, Object[] args, 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
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

public T queryForObject (String sql, Object[] args, int[] argTypes, 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
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

public T queryForObject (String sql, Class<T> requiredType)

Execute a query for a result object, given static SQL.

Uses a JDBC Statement, not a PreparedStatement. If you want to execute a static query with a PreparedStatement, use the overloaded queryForObject method with null 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.

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

public T queryForObject (String sql, Object[] args, 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
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

public SqlRowSet queryForRowSet (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.

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
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)

public SqlRowSet queryForRowSet (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.

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
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)

public SqlRowSet queryForRowSet (String sql)

Execute a query for a SqlRowSet, given static SQL.

Uses a JDBC Statement, not a PreparedStatement. If you want to execute a static query with a PreparedStatement, use the overloaded queryForRowSet method with null 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).

Parameters
sql SQL query to execute
Returns
  • a SqlRowSet representation (possibly a wrapper around a javax.sql.rowset.CachedRowSet)

public void setFetchSize (int fetchSize)

Set the fetch size for this JdbcTemplate. This is important for processing large result sets: Setting this higher than the default value will increase processing speed at the cost of memory consumption; setting this lower can avoid transferring row data that will never be read by the application.

Default is 0, indicating to use the JDBC driver's default.

public void setIgnoreWarnings (boolean ignoreWarnings)

Set whether or not we want to ignore SQLWarnings.

Default is "true", swallowing and logging all warnings. Switch this flag to "false" to make the JdbcTemplate throw a SQLWarningException instead.

public void setMaxRows (int maxRows)

Set the maximum number of rows for this JdbcTemplate. This is important for processing subsets of large result sets, avoiding to read and hold the entire result set in the database or in the JDBC driver if we're never interested in the entire result in the first place (for example, when performing searches that might return a large number of matches).

Default is 0, indicating to use the JDBC driver's default.

See Also

public void setNativeJdbcExtractor (NativeJdbcExtractor extractor)

Set a NativeJdbcExtractor to extract native JDBC objects from wrapped handles. Useful if native Statement and/or ResultSet handles are expected for casting to database-specific implementation classes, but a connection pool that wraps JDBC objects is used (note: any pool will return wrapped Connections).

public void setQueryTimeout (int queryTimeout)

Set the query timeout for statements that this JdbcTemplate executes.

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.

public void setResultsMapCaseInsensitive (boolean resultsMapCaseInsensitive)

Set whether execution of a CallableStatement will return the results in a Map that uses case insensitive names for the parameters.

public void setSkipResultsProcessing (boolean skipResultsProcessing)

Set whether results processing should be skipped. Can be used to optimize callable statement processing when we know that no results are being passed back - the processing of out parameter will still take place. This can be used to avoid a bug in some older Oracle JDBC drivers like 10.1.0.2.

public void setSkipUndeclaredResults (boolean skipUndeclaredResults)

Set whether undelared results should be skipped.

public int update (String sql)

Issue a single SQL update operation (such as an insert, update or delete statement).

Parameters
sql static SQL to execute
Returns
  • the number of rows affected

public int update (String sql, PreparedStatementSetter pss)

Issue an update statement using a PreparedStatementSetter to set bind parameters, with given SQL. Simpler than using a PreparedStatementCreator as this method will create the PreparedStatement: The PreparedStatementSetter just needs to set parameters.

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

public int update (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.

A PreparedStatementCreator can either be implemented directly or configured through a PreparedStatementCreatorFactory.

Parameters
psc object that provides SQL and any necessary parameters
Returns
  • the number of rows affected

public int update (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.

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

public int update (PreparedStatementCreator psc, KeyHolder generatedKeyHolder)

Issue an update statement using a PreparedStatementCreator to provide SQL and any required parameters. Generated keys will be put into the given KeyHolder.

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.

Parameters
psc object that provides SQL and any necessary parameters
generatedKeyHolder KeyHolder that will hold the generated keys
Returns
  • the number of rows affected

public int update (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.

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

Protected Methods

protected void applyStatementSettings (Statement stmt)

Prepare the given JDBC Statement (or PreparedStatement or CallableStatement), applying statement settings such as fetch size, max rows, and query timeout.

Parameters
stmt the JDBC Statement to prepare
Throws
SQLException if thrown by JDBC API

protected Connection createConnectionProxy (Connection con)

Create a close-suppressing proxy for the given JDBC Connection. Called by the execute method.

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

protected Map<StringObject> createResultsMap ()

Create a Map instance to be used as results map.

If "isResultsMapCaseInsensitive" has been set to true, a linked case-insensitive Map will be created.

Returns
  • the results Map instance

protected Map<StringObject> extractOutputParameters (CallableStatement cs, List<SqlParameter> parameters)

Extract output parameters from the completed stored procedure.

Parameters
cs JDBC wrapper for the stored procedure
parameters parameter list for the stored procedure
Returns
  • Map that contains returned results
Throws
SQLException

protected Map<StringObject> extractReturnedResults (CallableStatement cs, List updateCountParameters, List resultSetParameters, int updateCount)

Extract returned ResultSets from the completed stored procedure.

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

protected RowMapper<Map<StringObject>> getColumnMapRowMapper ()

Create a new RowMapper for reading columns as key-value pairs.

Returns
  • the RowMapper to use

protected RowMapper<T> getSingleColumnRowMapper (Class<T> requiredType)

Create a new RowMapper for reading result objects from a single column.

Parameters
requiredType the type that each result object is expected to match
Returns
  • the RowMapper to use

protected void handleWarnings (SQLWarning warning)

Throw an SQLWarningException if encountering an actual warning.

Parameters
warning the warnings object from the current statement. May be null, in which case this method does nothing.
Throws
SQLWarningException in case of an actual warning to be raised

protected void handleWarnings (Statement stmt)

Throw an SQLWarningException if we're not ignoring warnings, else log the warnings (at debug level).

Parameters
stmt the current JDBC statement
Throws
SQLWarningException if not ignoring warnings
SQLException

protected PreparedStatementSetter newArgPreparedStatementSetter (Object[] args)

Create a new ArgPreparedStatementSetter using the args passed in. This method allows the creation to be overridden by sub-classes.

Parameters
args object array woth arguments
Returns
  • the new PreparedStatementSetter

protected PreparedStatementSetter newArgTypePreparedStatementSetter (Object[] args, int[] argTypes)

Create a new ArgTypePreparedStatementSetter using the args and argTypes passed in. This method allows the creation to be overridden by sub-classes.

Parameters
args object array woth arguments
argTypes int array of SQLTypes for arguments
Returns
  • the new PreparedStatementSetter

protected Map<StringObject> processResultSet (ResultSet rs, ResultSetSupportingSqlParameter param)

Process the given ResultSet from a stored procedure.

Parameters
rs the ResultSet to process
param the corresponding stored procedure parameter
Returns
  • Map that contains returned results
Throws
SQLException