public abstract class AbstractQueryRunner extends Object
| Modifier and Type | Field and Description |
|---|---|
protected DataSource |
ds
The DataSource to retrieve connections from.
|
| Constructor and Description |
|---|
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.
|
| Modifier and Type | Method and Description |
|---|---|
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. |
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. |
protected final DataSource ds
public AbstractQueryRunner()
public AbstractQueryRunner(boolean pmdKnownBroken)
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.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)
Connection parameter will retrieve
connections from this DataSource.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.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 rs) throws SQLException
ResultSet. This implementation avoids closing if null and does not suppress any exceptions.
Subclasses can override to provide special handling like logging.rs - 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 occurspublic 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 DataSource getDataSource()
DataSource this runner is using. QueryRunner methods always call this method to get the
DataSource so subclasses can provide specialized behavior.public 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 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 PreparedStatementsql - The SQL statement to prepare.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 © 2012 Batoo Software & Consultancy. All Rights Reserved.