public abstract class AbstractQueryRunner extends Object
Modifier and Type | Field and Description |
---|---|
protected DataSource |
ds
Deprecated.
Access to this field should be through
getDataSource() . |
Constructor and Description |
---|
AbstractQueryRunner()
Default constructor, sets pmdKnownBroken to false, ds to null and stmtConfig to null.
|
AbstractQueryRunner(boolean pmdKnownBroken)
Constructor to control the use of
ParameterMetaData . |
AbstractQueryRunner(DataSource ds)
Constructor to provide a
DataSource . |
AbstractQueryRunner(DataSource ds,
boolean pmdKnownBroken)
Constructor to provide a
DataSource and control the use of
ParameterMetaData . |
AbstractQueryRunner(DataSource ds,
boolean pmdKnownBroken,
StatementConfiguration stmtConfig)
Constructor for QueryRunner that takes a
DataSource , a StatementConfiguration , and
controls the use of ParameterMetaData . |
AbstractQueryRunner(DataSource ds,
StatementConfiguration stmtConfig)
Constructor for QueryRunner that takes a
DataSource to use and a StatementConfiguration . |
AbstractQueryRunner(StatementConfiguration stmtConfig)
Constructor for QueryRunner that takes a
StatementConfiguration to configure statements when
preparing them. |
Modifier and Type | Method and Description |
---|---|
protected void |
close(Connection conn)
Close a
Connection . |
protected void |
close(ResultSet resultSet)
Close a
ResultSet . |
protected void |
close(Statement stmt)
Close a
Statement . |
protected void |
closeQuietly(Connection conn)
|
protected void |
closeQuietly(ResultSet resultSet)
|
protected void |
closeQuietly(Statement statement)
|
void |
fillStatement(PreparedStatement stmt,
Object... params)
Fill the
PreparedStatement replacement parameters with the
given objects. |
void |
fillStatement(PreparedStatement stmt,
ParameterMetaData pmd,
Object... params)
Fill the
PreparedStatement replacement parameters with the
given objects, and prefetched parameter metadata. |
void |
fillStatementWithBean(PreparedStatement stmt,
Object bean,
PropertyDescriptor[] properties)
Fill the
PreparedStatement replacement parameters with the
given object's bean property values. |
void |
fillStatementWithBean(PreparedStatement stmt,
Object bean,
String... propertyNames)
Fill the
PreparedStatement replacement parameters with the
given object's bean property values. |
DataSource |
getDataSource()
Returns the
DataSource this runner is using. |
ParameterMetaData |
getParameterMetaData(PreparedStatement stmt)
Get the
ParameterMetaData of the prepared statement, if the pmdKnownBroken
is set to false. |
boolean |
isPmdKnownBroken()
Some drivers don't support
ParameterMetaData.getParameterType(int) ; if
pmdKnownBroken is set to true, we won't even try it; if
false, we'll try it, and if it breaks, we'll remember not to use it
again. |
protected CallableStatement |
prepareCall(Connection conn,
String sql)
Factory method that creates and initializes a
CallableStatement object for the given SQL. |
protected Connection |
prepareConnection()
Factory method that creates and initializes a
Connection
object. |
protected PreparedStatement |
prepareStatement(Connection conn,
String sql)
Factory method that creates and initializes a
PreparedStatement object for the given SQL. |
protected PreparedStatement |
prepareStatement(Connection conn,
String sql,
int returnedKeys)
Factory method that creates and initializes a
PreparedStatement object for the given SQL. |
protected void |
rethrow(SQLException cause,
String sql,
Object... params)
Throws a new exception with a more informative error message.
|
protected ResultSet |
wrap(ResultSet rs)
Wrap the
ResultSet in a decorator before processing it. |
@Deprecated protected final DataSource ds
getDataSource()
.public AbstractQueryRunner()
public AbstractQueryRunner(boolean pmdKnownBroken)
ParameterMetaData
.pmdKnownBroken
- Some drivers don't support
ParameterMetaData.getParameterType(int)
; if
pmdKnownBroken
is set to true, we won't even try
it; if false, we'll try it, and if it breaks, we'll remember
not to use it again.public AbstractQueryRunner(DataSource ds)
DataSource
. Methods that do not
take a Connection
parameter will retrieve connections from
this DataSource
.ds
- The DataSource
to retrieve connections from.public AbstractQueryRunner(DataSource ds, boolean pmdKnownBroken)
DataSource
and control the use of
ParameterMetaData
. Methods that do not take a
Connection
parameter will retrieve connections from this
DataSource
.ds
- The DataSource
to retrieve connections from.pmdKnownBroken
- Some drivers don't support
ParameterMetaData.getParameterType(int)
; if
pmdKnownBroken
is set to true, we won't even try
it; if false, we'll try it, and if it breaks, we'll remember
not to use it again.public AbstractQueryRunner(DataSource ds, boolean pmdKnownBroken, StatementConfiguration stmtConfig)
DataSource
, a StatementConfiguration
, and
controls the use of ParameterMetaData
. Methods that do not take a Connection
parameter
will retrieve connections from this DataSource
.ds
- The DataSource
to retrieve connections from.pmdKnownBroken
- Some drivers don't support ParameterMetaData.getParameterType(int)
;
if pmdKnownBroken
is set to true, we won't even try it; if false, we'll try it,
and if it breaks, we'll remember not to use it again.stmtConfig
- The configuration to apply to statements when they are prepared.public AbstractQueryRunner(DataSource ds, StatementConfiguration stmtConfig)
DataSource
to use and a StatementConfiguration
.
Methods that do not take a Connection
parameter will retrieve connections from this
DataSource
.ds
- The DataSource
to retrieve connections from.stmtConfig
- The configuration to apply to statements when they are prepared.public AbstractQueryRunner(StatementConfiguration stmtConfig)
StatementConfiguration
to configure statements when
preparing them.stmtConfig
- The configuration to apply to statements when they are prepared.protected void close(Connection conn) throws SQLException
Connection
. This implementation avoids closing if
null and does not suppress any exceptions. Subclasses
can override to provide special handling like logging.conn
- Connection to closeSQLException
- if a database access error occursprotected void close(ResultSet resultSet) throws SQLException
ResultSet
. This implementation avoids closing if
null and does not suppress any exceptions. Subclasses
can override to provide special handling like logging.resultSet
- ResultSet to closeSQLException
- if a database access error occursprotected void close(Statement stmt) throws SQLException
Statement
. This implementation avoids closing if
null and does not suppress any exceptions. Subclasses
can override to provide special handling like logging.stmt
- Statement to closeSQLException
- if a database access error occursprotected void closeQuietly(Connection conn)
conn
- Connection to close.protected void closeQuietly(ResultSet resultSet)
resultSet
- ResultSet to close.protected void closeQuietly(Statement statement)
statement
- ResultSet to close.public void fillStatement(PreparedStatement stmt, Object... params) throws SQLException
PreparedStatement
replacement parameters with the
given objects.stmt
- PreparedStatement to fillparams
- Query replacement parameters; null
is a valid
value to pass in.SQLException
- if a database access error occurspublic void fillStatement(PreparedStatement stmt, ParameterMetaData pmd, Object... params) throws SQLException
PreparedStatement
replacement parameters with the
given objects, and prefetched parameter metadata.stmt
- PreparedStatement to fillpmd
- Prefetched parameter metadataparams
- Query replacement parameters; null
is a valid
value to pass in.SQLException
- if a database access error occurspublic void fillStatementWithBean(PreparedStatement stmt, Object bean, PropertyDescriptor[] properties) throws SQLException
PreparedStatement
replacement parameters with the
given object's bean property values.stmt
- PreparedStatement to fillbean
- a JavaBean objectproperties
- an ordered array of properties; this gives the order to insert
values in the statementSQLException
- if a database access error occurspublic void fillStatementWithBean(PreparedStatement stmt, Object bean, String... propertyNames) throws SQLException
PreparedStatement
replacement parameters with the
given object's bean property values.stmt
- PreparedStatement to fillbean
- A JavaBean objectpropertyNames
- An ordered array of property names (these should match the
getters/setters); this gives the order to insert values in the
statementSQLException
- If a database access error occurspublic DataSource getDataSource()
DataSource
this runner is using.
QueryRunner
methods always call this method to get the
DataSource
so subclasses can provide specialized behavior.public ParameterMetaData getParameterMetaData(PreparedStatement stmt) throws SQLException
ParameterMetaData
of the prepared statement, if the pmdKnownBroken
is set to false.stmt
- PreparedStatement of which to query the metadata of parametersSQLException
- if a database access error occurspublic boolean isPmdKnownBroken()
ParameterMetaData.getParameterType(int)
; if
pmdKnownBroken
is set to true, we won't even try it; if
false, we'll try it, and if it breaks, we'll remember not to use it
again.ParameterMetaData.getParameterType(int)
protected CallableStatement prepareCall(Connection conn, String sql) throws SQLException
CallableStatement
object for the given SQL.
QueryRunner
methods always call this method to prepare
callable statements for them. Subclasses can override this method to
provide special CallableStatement configuration if needed. This
implementation simply calls conn.prepareCall(sql)
.conn
- The Connection
used to create the
CallableStatement
sql
- The SQL statement to prepare.CallableStatement
.SQLException
- if a database access error occursprotected Connection prepareConnection() throws SQLException
Connection
object. QueryRunner
methods always call this method to
retrieve connections from its DataSource. Subclasses can override this
method to provide special Connection
configuration if
needed. This implementation simply calls ds.getConnection()
.Connection
.SQLException
- if a database access error occursprotected PreparedStatement prepareStatement(Connection conn, String sql) throws SQLException
PreparedStatement
object for the given SQL.
QueryRunner
methods always call this method to prepare
statements for them. Subclasses can override this method to provide
special PreparedStatement configuration if needed. This implementation
simply calls conn.prepareStatement(sql)
.conn
- The Connection
used to create the
PreparedStatement
sql
- The SQL statement to prepare.PreparedStatement
.SQLException
- if a database access error occursprotected PreparedStatement prepareStatement(Connection conn, String sql, int returnedKeys) throws SQLException
PreparedStatement
object for the given SQL.
QueryRunner
methods always call this method to prepare
statements for them. Subclasses can override this method to provide
special PreparedStatement configuration if needed. This implementation
simply calls conn.prepareStatement(sql, returnedKeys)
which will result in the ability to retrieve the automatically-generated
keys from an auto_increment column.conn
- The Connection
used to create the
PreparedStatement
sql
- The SQL statement to prepare.returnedKeys
- Flag indicating whether to return generated keys or not.PreparedStatement
.SQLException
- if a database access error occursprotected void rethrow(SQLException cause, String sql, Object... params) throws SQLException
cause
- The original exception that will be chained to the new
exception when it's rethrown.sql
- The query that was executing when the exception happened.params
- The query replacement parameters; null
is a valid
value to pass in.SQLException
- if a database access error occursprotected ResultSet wrap(ResultSet rs)
ResultSet
in a decorator before processing it. This
implementation returns the ResultSet
it is given without any
decoration.
Often, the implementation of this method can be done in an anonymous inner class like this:
QueryRunner run = new QueryRunner() { protected ResultSet wrap(ResultSet rs) { return StringTrimmedResultSet.wrap(rs); } };
rs
- The ResultSet
to decorate; never
null
.ResultSet
wrapped in some decorator.Copyright © 2002–2023 The Apache Software Foundation. All rights reserved.