Package org.apache.commons.dbutils
Class AsyncQueryRunner
- java.lang.Object
-
- org.apache.commons.dbutils.AbstractQueryRunner
-
- org.apache.commons.dbutils.AsyncQueryRunner
-
public class AsyncQueryRunner extends AbstractQueryRunner
Executes SQL queries with pluggable strategies for handlingResultSet
s. This class is thread safe.- Since:
- 1.4
- See Also:
ResultSetHandler
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
AsyncQueryRunner.BatchCallableStatement
Deprecated.No longer used by this class.protected class
AsyncQueryRunner.QueryCallableStatement<T>
Class that encapsulates the continuation for query calls.protected class
AsyncQueryRunner.UpdateCallableStatement
Deprecated.No longer used by this class.
-
Field Summary
Fields Modifier and Type Field Description private java.util.concurrent.ExecutorService
executorService
private QueryRunner
queryRunner
-
Fields inherited from class org.apache.commons.dbutils.AbstractQueryRunner
ds
-
-
Constructor Summary
Constructors Constructor Description AsyncQueryRunner(boolean pmdKnownBroken, java.util.concurrent.ExecutorService executorService)
Deprecated.UseAsyncQueryRunner(ExecutorService, QueryRunner)
instead.AsyncQueryRunner(java.util.concurrent.ExecutorService executorService)
Constructor for AsyncQueryRunner.AsyncQueryRunner(java.util.concurrent.ExecutorService executorService, QueryRunner queryRunner)
Constructor for AsyncQueryRunner which uses a provided ExecutorService and underlying QueryRunner.AsyncQueryRunner(javax.sql.DataSource ds, boolean pmdKnownBroken, java.util.concurrent.ExecutorService executorService)
Deprecated.UseAsyncQueryRunner(ExecutorService, QueryRunner)
instead.AsyncQueryRunner(javax.sql.DataSource ds, java.util.concurrent.ExecutorService executorService)
Deprecated.UseAsyncQueryRunner(ExecutorService, QueryRunner)
instead.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.concurrent.Future<int[]>
batch(java.lang.String sql, java.lang.Object[][] params)
Execute a batch of SQL INSERT, UPDATE, or DELETE queries.java.util.concurrent.Future<int[]>
batch(java.sql.Connection conn, java.lang.String sql, java.lang.Object[][] params)
Execute a batch of SQL INSERT, UPDATE, or DELETE queries.<T> java.util.concurrent.Future<T>
insert(java.lang.String sql, ResultSetHandler<T> rsh)
ExecutesQueryRunner.insert(String, ResultSetHandler)
asynchronously.<T> java.util.concurrent.Future<T>
insert(java.lang.String sql, ResultSetHandler<T> rsh, java.lang.Object... params)
ExecutesQueryRunner.insert(String, ResultSetHandler, Object...)
asynchronously.<T> java.util.concurrent.Future<T>
insert(java.sql.Connection conn, java.lang.String sql, ResultSetHandler<T> rsh)
ExecutesQueryRunner.insert(Connection, String, ResultSetHandler)
asynchronously.<T> java.util.concurrent.Future<T>
insert(java.sql.Connection conn, java.lang.String sql, ResultSetHandler<T> rsh, java.lang.Object... params)
ExecutesQueryRunner.insert(Connection, String, ResultSetHandler, Object...)
asynchronously.<T> java.util.concurrent.Future<T>
insertBatch(java.lang.String sql, ResultSetHandler<T> rsh, java.lang.Object[][] params)
QueryRunner.insertBatch(String, ResultSetHandler, Object[][])
asynchronously.<T> java.util.concurrent.Future<T>
insertBatch(java.sql.Connection conn, java.lang.String sql, ResultSetHandler<T> rsh, java.lang.Object[][] params)
<T> java.util.concurrent.Future<T>
query(java.lang.String sql, ResultSetHandler<T> rsh)
Executes the given SELECT SQL without any replacement parameters.<T> java.util.concurrent.Future<T>
query(java.lang.String sql, ResultSetHandler<T> rsh, java.lang.Object... params)
Executes the given SELECT SQL query and returns a result object.<T> java.util.concurrent.Future<T>
query(java.sql.Connection conn, java.lang.String sql, ResultSetHandler<T> rsh)
Execute an SQL SELECT query without any replacement parameters.<T> java.util.concurrent.Future<T>
query(java.sql.Connection conn, java.lang.String sql, ResultSetHandler<T> rsh, java.lang.Object... params)
Execute an SQL SELECT query with replacement parameters.java.util.concurrent.Future<java.lang.Integer>
update(java.lang.String sql)
Executes the given INSERT, UPDATE, or DELETE SQL statement without any replacement parameters.java.util.concurrent.Future<java.lang.Integer>
update(java.lang.String sql, java.lang.Object param)
Executes the given INSERT, UPDATE, or DELETE SQL statement with a single replacement parameter.java.util.concurrent.Future<java.lang.Integer>
update(java.lang.String sql, java.lang.Object... params)
Executes the given INSERT, UPDATE, or DELETE SQL statement.java.util.concurrent.Future<java.lang.Integer>
update(java.sql.Connection conn, java.lang.String sql)
Execute an SQL INSERT, UPDATE, or DELETE query without replacement parameters.java.util.concurrent.Future<java.lang.Integer>
update(java.sql.Connection conn, java.lang.String sql, java.lang.Object param)
Execute an SQL INSERT, UPDATE, or DELETE query with a single replacement parameter.java.util.concurrent.Future<java.lang.Integer>
update(java.sql.Connection conn, java.lang.String sql, java.lang.Object... params)
Execute an SQL INSERT, UPDATE, or DELETE query.-
Methods inherited from class org.apache.commons.dbutils.AbstractQueryRunner
close, close, close, closeQuietly, closeQuietly, closeQuietly, fillStatement, fillStatementWithBean, fillStatementWithBean, getDataSource, isPmdKnownBroken, prepareCall, prepareConnection, prepareStatement, prepareStatement, rethrow, wrap
-
-
-
-
Field Detail
-
executorService
private final java.util.concurrent.ExecutorService executorService
-
queryRunner
private final QueryRunner queryRunner
-
-
Constructor Detail
-
AsyncQueryRunner
public AsyncQueryRunner(java.util.concurrent.ExecutorService executorService, QueryRunner queryRunner)
Constructor for AsyncQueryRunner which uses a provided ExecutorService and underlying QueryRunner.- Parameters:
executorService
- theExecutorService
instance used to run JDBC invocations concurrently.queryRunner
- theQueryRunner
instance to use for the queries.- Since:
- DbUtils 1.5
-
AsyncQueryRunner
public AsyncQueryRunner(java.util.concurrent.ExecutorService executorService)
Constructor for AsyncQueryRunner.- Parameters:
executorService
- theExecutorService
instance used to run JDBC invocations concurrently.
-
AsyncQueryRunner
@Deprecated public AsyncQueryRunner(boolean pmdKnownBroken, java.util.concurrent.ExecutorService executorService)
Deprecated.UseAsyncQueryRunner(ExecutorService, QueryRunner)
instead. Constructor for AsyncQueryRunner that controls the use ofParameterMetaData
.- Parameters:
pmdKnownBroken
- Some drivers don't supportParameterMetaData.getParameterType(int)
; ifpmdKnownBroken
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.executorService
- theExecutorService
instance used to run JDBC invocations concurrently.
-
AsyncQueryRunner
@Deprecated public AsyncQueryRunner(javax.sql.DataSource ds, java.util.concurrent.ExecutorService executorService)
Deprecated.UseAsyncQueryRunner(ExecutorService, QueryRunner)
instead. Constructor for AsyncQueryRunner that takes aDataSource
. Methods that do not take aConnection
parameter will retrieve connections from thisDataSource
.- Parameters:
ds
- TheDataSource
to retrieve connections from.executorService
- theExecutorService
instance used to run JDBC invocations concurrently.
-
AsyncQueryRunner
@Deprecated public AsyncQueryRunner(javax.sql.DataSource ds, boolean pmdKnownBroken, java.util.concurrent.ExecutorService executorService)
Deprecated.UseAsyncQueryRunner(ExecutorService, QueryRunner)
instead. Constructor for AsyncQueryRunner that take aDataSource
and controls the use ofParameterMetaData
. Methods that do not take aConnection
parameter will retrieve connections from thisDataSource
.- Parameters:
ds
- TheDataSource
to retrieve connections from.pmdKnownBroken
- Some drivers don't supportParameterMetaData.getParameterType(int)
; ifpmdKnownBroken
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.executorService
- theExecutorService
instance used to run JDBC invocations concurrently.
-
-
Method Detail
-
batch
public java.util.concurrent.Future<int[]> batch(java.sql.Connection conn, java.lang.String sql, java.lang.Object[][] params) throws java.sql.SQLException
Execute a batch of SQL INSERT, UPDATE, or DELETE queries.- Parameters:
conn
- TheConnection
to use to run the query. The caller is responsible for closing this Connection.sql
- The SQL to execute.params
- An array of query replacement parameters. Each row in this array is one set of batch replacement values.- Returns:
- A
Future
which returns the number of rows updated per statement. - Throws:
java.sql.SQLException
- if a database access error occurs
-
batch
public java.util.concurrent.Future<int[]> batch(java.lang.String sql, java.lang.Object[][] params) throws java.sql.SQLException
Execute a batch of SQL INSERT, UPDATE, or DELETE queries. TheConnection
is retrieved from theDataSource
set in the constructor. ThisConnection
must be in auto-commit mode or the update will not be saved.- Parameters:
sql
- The SQL to execute.params
- An array of query replacement parameters. Each row in this array is one set of batch replacement values.- Returns:
- A
Future
which returns the number of rows updated per statement. - Throws:
java.sql.SQLException
- if a database access error occurs
-
query
public <T> java.util.concurrent.Future<T> query(java.sql.Connection conn, java.lang.String sql, ResultSetHandler<T> rsh, java.lang.Object... params) throws java.sql.SQLException
Execute an SQL SELECT query with replacement parameters. The caller is responsible for closing the connection.- Type Parameters:
T
- The type of object that the handler returns- Parameters:
conn
- The connection to execute the query in.sql
- The query to execute.rsh
- The handler that converts the results into an object.params
- The replacement parameters.- Returns:
- A
Future
which returns the result of the query call. - Throws:
java.sql.SQLException
- if a database access error occurs
-
query
public <T> java.util.concurrent.Future<T> query(java.sql.Connection conn, java.lang.String sql, ResultSetHandler<T> rsh) throws java.sql.SQLException
Execute an SQL SELECT query without any replacement parameters. The caller is responsible for closing the connection.- Type Parameters:
T
- The type of object that the handler returns- Parameters:
conn
- The connection to execute the query in.sql
- The query to execute.rsh
- The handler that converts the results into an object.- Returns:
- A
Future
which returns the result of the query call. - Throws:
java.sql.SQLException
- if a database access error occurs
-
query
public <T> java.util.concurrent.Future<T> query(java.lang.String sql, ResultSetHandler<T> rsh, java.lang.Object... params) throws java.sql.SQLException
Executes the given SELECT SQL query and returns a result object. TheConnection
is retrieved from theDataSource
set in the constructor.- Type Parameters:
T
- The type of object that the handler returns- Parameters:
sql
- The SQL statement to execute.rsh
- The handler used to create the result object from theResultSet
.params
- Initialize the PreparedStatement's IN parameters with this array.- Returns:
- A
Future
which returns the result of the query call. - Throws:
java.sql.SQLException
- if a database access error occurs
-
query
public <T> java.util.concurrent.Future<T> query(java.lang.String sql, ResultSetHandler<T> rsh) throws java.sql.SQLException
Executes the given SELECT SQL without any replacement parameters. TheConnection
is retrieved from theDataSource
set in the constructor.- Type Parameters:
T
- The type of object that the handler returns- Parameters:
sql
- The SQL statement to execute.rsh
- The handler used to create the result object from theResultSet
.- Returns:
- A
Future
which returns the result of the query call. - Throws:
java.sql.SQLException
- if a database access error occurs
-
update
public java.util.concurrent.Future<java.lang.Integer> update(java.sql.Connection conn, java.lang.String sql) throws java.sql.SQLException
Execute an SQL INSERT, UPDATE, or DELETE query without replacement parameters.- Parameters:
conn
- The connection to use to run the query.sql
- The SQL to execute.- Returns:
- A
Future
which returns the number of rows updated. - Throws:
java.sql.SQLException
- if a database access error occurs
-
update
public java.util.concurrent.Future<java.lang.Integer> update(java.sql.Connection conn, java.lang.String sql, java.lang.Object param) throws java.sql.SQLException
Execute an SQL INSERT, UPDATE, or DELETE query with a single replacement parameter.- Parameters:
conn
- The connection to use to run the query.sql
- The SQL to execute.param
- The replacement parameter.- Returns:
- A
Future
which returns the number of rows updated. - Throws:
java.sql.SQLException
- if a database access error occurs
-
update
public java.util.concurrent.Future<java.lang.Integer> update(java.sql.Connection conn, java.lang.String sql, java.lang.Object... params) throws java.sql.SQLException
Execute an SQL INSERT, UPDATE, or DELETE query.- Parameters:
conn
- The connection to use to run the query.sql
- The SQL to execute.params
- The query replacement parameters.- Returns:
- A
Future
which returns the number of rows updated. - Throws:
java.sql.SQLException
- if a database access error occurs
-
update
public java.util.concurrent.Future<java.lang.Integer> update(java.lang.String sql) throws java.sql.SQLException
Executes the given INSERT, UPDATE, or DELETE SQL statement without any replacement parameters. TheConnection
is retrieved from theDataSource
set in the constructor. ThisConnection
must be in auto-commit mode or the update will not be saved.- Parameters:
sql
- The SQL statement to execute.- Returns:
- A
Future
which returns the number of rows updated. - Throws:
java.sql.SQLException
- if a database access error occurs
-
update
public java.util.concurrent.Future<java.lang.Integer> update(java.lang.String sql, java.lang.Object param) throws java.sql.SQLException
Executes the given INSERT, UPDATE, or DELETE SQL statement with a single replacement parameter. TheConnection
is retrieved from theDataSource
set in the constructor. ThisConnection
must be in auto-commit mode or the update will not be saved.- Parameters:
sql
- The SQL statement to execute.param
- The replacement parameter.- Returns:
- A
Future
which returns the number of rows updated. - Throws:
java.sql.SQLException
- if a database access error occurs
-
update
public java.util.concurrent.Future<java.lang.Integer> update(java.lang.String sql, java.lang.Object... params) throws java.sql.SQLException
Executes the given INSERT, UPDATE, or DELETE SQL statement. TheConnection
is retrieved from theDataSource
set in the constructor. ThisConnection
must be in auto-commit mode or the update will not be saved.- Parameters:
sql
- The SQL statement to execute.params
- Initializes the PreparedStatement's IN (i.e. '?') parameters.- Returns:
- A
Future
which returns the number of rows updated. - Throws:
java.sql.SQLException
- if a database access error occurs
-
insert
public <T> java.util.concurrent.Future<T> insert(java.lang.String sql, ResultSetHandler<T> rsh) throws java.sql.SQLException
ExecutesQueryRunner.insert(String, ResultSetHandler)
asynchronously.- Type Parameters:
T
- Return type expected- Parameters:
sql
- SQL insert statement to executersh
-ResultSetHandler
for handling the results- Returns:
Future
that executes a query runner insert- Throws:
java.sql.SQLException
- if a database access error occurs- Since:
- 1.6
- See Also:
QueryRunner.insert(String, ResultSetHandler)
-
insert
public <T> java.util.concurrent.Future<T> insert(java.lang.String sql, ResultSetHandler<T> rsh, java.lang.Object... params) throws java.sql.SQLException
ExecutesQueryRunner.insert(String, ResultSetHandler, Object...)
asynchronously.- Type Parameters:
T
- Return type expected- Parameters:
sql
- SQL insert statement to executersh
-ResultSetHandler
for handling the resultsparams
- Parameter values for substitution in the SQL statement- Returns:
Future
that executes a query runner insert- Throws:
java.sql.SQLException
- if a database access error occurs- Since:
- 1.6
- See Also:
QueryRunner.insert(String, ResultSetHandler, Object...)
-
insert
public <T> java.util.concurrent.Future<T> insert(java.sql.Connection conn, java.lang.String sql, ResultSetHandler<T> rsh) throws java.sql.SQLException
ExecutesQueryRunner.insert(Connection, String, ResultSetHandler)
asynchronously.- Type Parameters:
T
- Return type expected- Parameters:
conn
-Connection
to use to execute the SQL statementsql
- SQL insert statement to executersh
-ResultSetHandler
for handling the results- Returns:
Future
that executes a query runner insert- Throws:
java.sql.SQLException
- if a database access error occurs- Since:
- 1.6
- See Also:
QueryRunner.insert(Connection, String, ResultSetHandler)
-
insert
public <T> java.util.concurrent.Future<T> insert(java.sql.Connection conn, java.lang.String sql, ResultSetHandler<T> rsh, java.lang.Object... params) throws java.sql.SQLException
ExecutesQueryRunner.insert(Connection, String, ResultSetHandler, Object...)
asynchronously.- Type Parameters:
T
- Return type expected- Parameters:
conn
-Connection
to use to execute the SQL statementsql
- SQL insert statement to executersh
-ResultSetHandler
for handling the resultsparams
- Parameter values for substitution in the SQL statement- Returns:
Future
that executes a query runner insert- Throws:
java.sql.SQLException
- if a database access error occurs- Since:
- 1.6
- See Also:
QueryRunner.insert(Connection, String, ResultSetHandler, Object...)
-
insertBatch
public <T> java.util.concurrent.Future<T> insertBatch(java.lang.String sql, ResultSetHandler<T> rsh, java.lang.Object[][] params) throws java.sql.SQLException
QueryRunner.insertBatch(String, ResultSetHandler, Object[][])
asynchronously.- Type Parameters:
T
- Return type expected- Parameters:
sql
- SQL insert statement to executersh
-ResultSetHandler
for handling the resultsparams
- An array of query replacement parameters. Each row in this array is one set of batch replacement values.- Returns:
Future
that executes a query runner batch insert- Throws:
java.sql.SQLException
- if a database access error occurs- Since:
- 1.6
- See Also:
QueryRunner.insertBatch(String, ResultSetHandler, Object[][])
-
insertBatch
public <T> java.util.concurrent.Future<T> insertBatch(java.sql.Connection conn, java.lang.String sql, ResultSetHandler<T> rsh, java.lang.Object[][] params) throws java.sql.SQLException
- Type Parameters:
T
- Return type expected- Parameters:
conn
-Connection
to use to execute the SQL statementsql
- SQL insert statement to executersh
-ResultSetHandler
for handling the resultsparams
- An array of query replacement parameters. Each row in this array is one set of batch replacement values.- Returns:
Future
that executes a query runner batch insert- Throws:
java.sql.SQLException
- if a database access error occurs- Since:
- 1.6
- See Also:
QueryRunner.insertBatch(Connection, String, ResultSetHandler, Object[][])
-
-