org.apache.commons.dbutils
Class AbstractQueryRunner

java.lang.Object
  extended by org.apache.commons.dbutils.AbstractQueryRunner
Direct Known Subclasses:
AsyncQueryRunner, QueryRunner

public abstract class AbstractQueryRunner
extends Object

The base class for QueryRunner & AsyncQueryRunner. This class is thread safe.

Since:
1.4 (mostly extracted from QueryRunner)

Field Summary
protected  DataSource ds
          The DataSource to retrieve connections from.
 
Constructor Summary
AbstractQueryRunner()
          Default constructor, sets pmdKnownBroken to false and ds to null.
AbstractQueryRunner(boolean pmdKnownBroken)
          Constructor to allow workaround for Oracle drivers
AbstractQueryRunner(DataSource ds)
          Constructor to provide a DataSource.
AbstractQueryRunner(DataSource ds, boolean pmdKnownBroken)
          Constructor to allow workaround for Oracle drivers.
 
Method Summary
protected  void close(Connection conn)
          Close a Connection.
protected  void close(ResultSet rs)
          Close a ResultSet.
protected  void close(Statement stmt)
          Close a Statement.
 void fillStatement(PreparedStatement stmt, Object... params)
          Fill the PreparedStatement replacement parameters with the given objects.
 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.
 boolean isPmdKnownBroken()
          Oracle 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  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  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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ds

protected final DataSource ds
The DataSource to retrieve connections from.

Constructor Detail

AbstractQueryRunner

public AbstractQueryRunner()
Default constructor, sets pmdKnownBroken to false and ds to null.


AbstractQueryRunner

public AbstractQueryRunner(boolean pmdKnownBroken)
Constructor to allow workaround for Oracle drivers

Parameters:
pmdKnownBroken - Oracle 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.

AbstractQueryRunner

public AbstractQueryRunner(DataSource ds)
Constructor to provide a DataSource. Methods that do not take a Connection parameter will retrieve connections from this DataSource.

Parameters:
ds - The DataSource to retrieve connections from.

AbstractQueryRunner

public AbstractQueryRunner(DataSource ds,
                           boolean pmdKnownBroken)
Constructor to allow workaround for Oracle drivers. Methods that do not take a Connection parameter will retrieve connections from this DataSource.

Parameters:
ds - The DataSource to retrieve connections from.
pmdKnownBroken - Oracle 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.
Method Detail

getDataSource

public DataSource getDataSource()
Returns the DataSource this runner is using. QueryRunner methods always call this method to get the DataSource so subclasses can provide specialized behavior.

Returns:
DataSource the runner is using

isPmdKnownBroken

public boolean isPmdKnownBroken()
Oracle 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.

Returns:
the flag to skip (or not) ParameterMetaData.getParameterType(int)
Since:
1.4

prepareStatement

protected PreparedStatement prepareStatement(Connection conn,
                                             String sql)
                                      throws SQLException
Factory method that creates and initializes a 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).

Parameters:
conn - The Connection used to create the PreparedStatement
sql - The SQL statement to prepare.
Returns:
An initialized PreparedStatement.
Throws:
SQLException - if a database access error occurs

prepareConnection

protected Connection prepareConnection()
                                throws SQLException
Factory method that creates and initializes a 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().

Returns:
An initialized Connection.
Throws:
SQLException - if a database access error occurs
Since:
DbUtils 1.1

fillStatement

public void fillStatement(PreparedStatement stmt,
                          Object... params)
                   throws SQLException
Fill the PreparedStatement replacement parameters with the given objects.

Parameters:
stmt - PreparedStatement to fill
params - Query replacement parameters; null is 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 the PreparedStatement replacement parameters with the given object's bean property values.

Parameters:
stmt - PreparedStatement to fill
bean - a JavaBean object
properties - 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 the PreparedStatement replacement parameters with the given object's bean property values.

Parameters:
stmt - PreparedStatement to fill
bean - A JavaBean object
propertyNames - 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

rethrow

protected void rethrow(SQLException cause,
                       String sql,
                       Object... params)
                throws SQLException
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; null is a valid value to pass in.
Throws:
SQLException - if a database access error occurs

wrap

protected ResultSet wrap(ResultSet rs)
Wrap the 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);
     }
 };
 

Parameters:
rs - The ResultSet to decorate; never null.
Returns:
The ResultSet wrapped in some decorator.

close

protected void close(Connection conn)
              throws SQLException
Close a Connection. 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:
DbUtils 1.1

close

protected void close(Statement stmt)
              throws SQLException
Close a Statement. 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:
DbUtils 1.1

close

protected void close(ResultSet rs)
              throws SQLException
Close a ResultSet. This implementation avoids closing if null and does not suppress any exceptions. Subclasses can override to provide special handling like logging.

Parameters:
rs - ResultSet to close
Throws:
SQLException - if a database access error occurs
Since:
DbUtils 1.1


Copyright © 2002-2011 The Apache Software Foundation. All Rights Reserved.