Package org.apache.commons.dbutils
Class AbstractQueryRunner
java.lang.Object
org.apache.commons.dbutils.AbstractQueryRunner
- Direct Known Subclasses:
AsyncQueryRunner,QueryRunner
The base class for QueryRunner & AsyncQueryRunner. This class is thread safe.
- Since:
- 1.4 (mostly extracted from QueryRunner)
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionDefault constructor, sets pmdKnownBroken to false, ds to null and stmtConfig to null.AbstractQueryRunner(boolean pmdKnownBroken) Constructor to control the use ofParameterMetaData.Constructor to provide aDataSource.AbstractQueryRunner(DataSource ds, boolean pmdKnownBroken) Constructor to provide aDataSourceand control the use ofParameterMetaData.AbstractQueryRunner(DataSource ds, boolean pmdKnownBroken, StatementConfiguration stmtConfig) Constructor for QueryRunner that takes aDataSource, aStatementConfiguration, and controls the use ofParameterMetaData.AbstractQueryRunner(DataSource ds, StatementConfiguration stmtConfig) Constructor for QueryRunner that takes aDataSourceto use and aStatementConfiguration.AbstractQueryRunner(StatementConfiguration stmtConfig) Constructor for QueryRunner that takes aStatementConfigurationto configure statements when preparing them. -
Method Summary
Modifier and TypeMethodDescriptionprotected voidclose(Connection conn) Close aConnection.protected voidClose aResultSet.protected voidClose aStatement.protected voidcloseQuietly(Connection conn) protected voidcloseQuietly(ResultSet resultSet) protected voidcloseQuietly(Statement statement) voidfillStatement(PreparedStatement stmt, Object... params) Fill thePreparedStatementreplacement parameters with the given objects.voidfillStatement(PreparedStatement stmt, ParameterMetaData pmd, Object... params) Fill thePreparedStatementreplacement parameters with the given objects, and prefetched parameter metadata.voidfillStatementWithBean(PreparedStatement stmt, Object bean, PropertyDescriptor[] properties) Fill thePreparedStatementreplacement parameters with the given object's bean property values.voidfillStatementWithBean(PreparedStatement stmt, Object bean, String... propertyNames) Fill thePreparedStatementreplacement parameters with the given object's bean property values.Returns theDataSourcethis runner is using.Get theParameterMetaDataof the prepared statement, if thepmdKnownBrokenis set to false.booleanSome drivers don't supportParameterMetaData.getParameterType(int); ifpmdKnownBrokenis 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 CallableStatementprepareCall(Connection conn, String sql) Factory method that creates and initializes aCallableStatementobject for the given SQL.protected ConnectionFactory method that creates and initializes aConnectionobject.protected PreparedStatementprepareStatement(Connection conn, String sql) Factory method that creates and initializes aPreparedStatementobject for the given SQL.protected PreparedStatementprepareStatement(Connection conn, String sql, int returnedKeys) Factory method that creates and initializes aPreparedStatementobject for the given SQL.protected voidrethrow(SQLException cause, String sql, Object... params) Throws a new exception with a more informative error message.protected ResultSetWrap theResultSetin a decorator before processing it.
-
Field Details
-
ds
Deprecated.Access to this field should be throughgetDataSource().The DataSource to retrieve connections from.
-
-
Constructor Details
-
AbstractQueryRunner
public AbstractQueryRunner()Default constructor, sets pmdKnownBroken to false, ds to null and stmtConfig to null. -
AbstractQueryRunner
Constructor to control the use ofParameterMetaData.- Parameters:
pmdKnownBroken- Some drivers don't supportParameterMetaData.getParameterType(int); ifpmdKnownBrokenis 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.
-
AbstractQueryRunner
Constructor to provide aDataSource. Methods that do not take aConnectionparameter will retrieve connections from thisDataSource.- Parameters:
ds- TheDataSourceto retrieve connections from.
-
AbstractQueryRunner
Constructor to provide aDataSourceand control the use ofParameterMetaData. Methods that do not take aConnectionparameter will retrieve connections from thisDataSource.- Parameters:
ds- TheDataSourceto retrieve connections from.pmdKnownBroken- Some drivers don't supportParameterMetaData.getParameterType(int); ifpmdKnownBrokenis 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.
-
AbstractQueryRunner
public AbstractQueryRunner(DataSource ds, boolean pmdKnownBroken, StatementConfiguration stmtConfig) Constructor for QueryRunner that takes aDataSource, aStatementConfiguration, and controls the use ofParameterMetaData. Methods that do not take aConnectionparameter will retrieve connections from thisDataSource.- Parameters:
ds- TheDataSourceto retrieve connections from.pmdKnownBroken- Some drivers don't supportParameterMetaData.getParameterType(int); ifpmdKnownBrokenis 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.
-
AbstractQueryRunner
Constructor for QueryRunner that takes aDataSourceto use and aStatementConfiguration. Methods that do not take aConnectionparameter will retrieve connections from thisDataSource.- Parameters:
ds- TheDataSourceto retrieve connections from.stmtConfig- The configuration to apply to statements when they are prepared.
-
AbstractQueryRunner
Constructor for QueryRunner that takes aStatementConfigurationto configure statements when preparing them.- Parameters:
stmtConfig- The configuration to apply to statements when they are prepared.
-
-
Method Details
-
close
Close aConnection. This implementation avoids closing if null and does not suppress any exceptions. Subclasses can override to provide special handling like logging.- Parameters:
conn- Connection to close- Throws:
SQLException- if a database access error occurs- Since:
- 1.1
-
close
Close aResultSet. This implementation avoids closing if null and does not suppress any exceptions. Subclasses can override to provide special handling like logging.- Parameters:
resultSet- ResultSet to close- Throws:
SQLException- if a database access error occurs- Since:
- 1.1
-
close
Close aStatement. This implementation avoids closing if null and does not suppress any exceptions. Subclasses can override to provide special handling like logging.- Parameters:
stmt- Statement to close- Throws:
SQLException- if a database access error occurs- Since:
- 1.1
-
closeQuietly
- Parameters:
conn- Connection to close.- Since:
- 1.8.0
-
closeQuietly
- Parameters:
resultSet- ResultSet to close.- Since:
- 1.8.0
-
closeQuietly
- Parameters:
statement- ResultSet to close.- Since:
- 1.8.0
-
fillStatement
Fill thePreparedStatementreplacement parameters with the given objects.- Parameters:
stmt- PreparedStatement to fillparams- Query replacement parameters;nullis a valid value to pass in.- Throws:
SQLException- if a database access error occurs
-
fillStatement
public void fillStatement(PreparedStatement stmt, ParameterMetaData pmd, Object... params) throws SQLException Fill thePreparedStatementreplacement parameters with the given objects, and prefetched parameter metadata.- Parameters:
stmt- PreparedStatement to fillpmd- Prefetched parameter metadataparams- Query replacement parameters;nullis a valid value to pass in.- Throws:
SQLException- if a database access error occurs
-
fillStatementWithBean
public void fillStatementWithBean(PreparedStatement stmt, Object bean, PropertyDescriptor[] properties) throws SQLException Fill thePreparedStatementreplacement parameters with the given object's bean property values.- Parameters:
stmt- PreparedStatement to fillbean- a JavaBean objectproperties- an ordered array of properties; this gives the order to insert values in the statement- Throws:
SQLException- if a database access error occurs
-
fillStatementWithBean
public void fillStatementWithBean(PreparedStatement stmt, Object bean, String... propertyNames) throws SQLException Fill thePreparedStatementreplacement parameters with the given object's bean property values.- Parameters:
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 statement- Throws:
SQLException- If a database access error occurs
-
getDataSource
Returns theDataSourcethis runner is using.QueryRunnermethods always call this method to get theDataSourceso subclasses can provide specialized behavior.- Returns:
- DataSource the runner is using
-
getParameterMetaData
Get theParameterMetaDataof the prepared statement, if thepmdKnownBrokenis set to false.- Parameters:
stmt- PreparedStatement of which to query the metadata of parameters- Returns:
- the metadata of parameters
- Throws:
SQLException- if a database access error occurs
-
isPmdKnownBroken
Some drivers don't supportParameterMetaData.getParameterType(int); ifpmdKnownBrokenis 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.- Returns:
- the flag to skip (or not)
ParameterMetaData.getParameterType(int) - Since:
- 1.4
-
prepareCall
Factory method that creates and initializes aCallableStatementobject for the given SQL.QueryRunnermethods 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 callsconn.prepareCall(sql).- Parameters:
conn- TheConnectionused to create theCallableStatementsql- The SQL statement to prepare.- Returns:
- An initialized
CallableStatement. - Throws:
SQLException- if a database access error occurs
-
prepareConnection
Factory method that creates and initializes aConnectionobject.QueryRunnermethods always call this method to retrieve connections from its DataSource. Subclasses can override this method to provide specialConnectionconfiguration if needed. This implementation simply callsds.getConnection().- Returns:
- An initialized
Connection. - Throws:
SQLException- if a database access error occurs- Since:
- 1.1
-
prepareStatement
Factory method that creates and initializes aPreparedStatementobject for the given SQL.QueryRunnermethods always call this method to prepare statements for them. Subclasses can override this method to provide special PreparedStatement configuration if needed. This implementation simply callsconn.prepareStatement(sql).- Parameters:
conn- TheConnectionused to create thePreparedStatementsql- The SQL statement to prepare.- Returns:
- An initialized
PreparedStatement. - Throws:
SQLException- if a database access error occurs
-
prepareStatement
protected PreparedStatement prepareStatement(Connection conn, String sql, int returnedKeys) throws SQLException Factory method that creates and initializes aPreparedStatementobject for the given SQL.QueryRunnermethods always call this method to prepare statements for them. Subclasses can override this method to provide special PreparedStatement configuration if needed. This implementation simply callsconn.prepareStatement(sql, returnedKeys)which will result in the ability to retrieve the automatically-generated keys from an auto_increment column.- Parameters:
conn- TheConnectionused to create thePreparedStatementsql- The SQL statement to prepare.returnedKeys- Flag indicating whether to return generated keys or not.- Returns:
- An initialized
PreparedStatement. - Throws:
SQLException- if a database access error occurs- Since:
- 1.6
-
rethrow
Throws a new exception with a more informative error message.- Parameters:
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;nullis a valid value to pass in.- Throws:
SQLException- if a database access error occurs
-
wrap
Wrap theResultSetin a decorator before processing it. This implementation returns theResultSetit 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); } };- Parameters:
rs- TheResultSetto decorate; nevernull.- Returns:
- The
ResultSetwrapped in some decorator.
-
getDataSource().