Class SqlMapClientImpl
- All Implemented Interfaces:
SqlMapClient,SqlMapExecutor,SqlMapTransactionManager,ExtendedSqlMapClient
-
Field Summary
FieldsModifier and TypeFieldDescriptionDelegate for SQL execution.protected ThreadLocal<SqlMapSessionImpl>The local sql map session. -
Constructor Summary
ConstructorsConstructorDescriptionSqlMapClientImpl(SqlMapExecutorDelegate delegate) Constructor to supply a delegate. -
Method Summary
Modifier and TypeMethodDescriptionvoidCommits the currently started transaction.intExecutes a mapped SQL DELETE statement.intExecutes a mapped SQL DELETE statement.voidEnds a transaction and rolls back if necessary.intExecutes (flushes) all statements currently batched.Executes (flushes) all statements currently batched.voidFlushes all data caches.voidflushDataCache(String cacheId) Flushes the data cache that matches the cache model ID provided.Returns the current connection in use.Returns the DataSource instance currently being used by the SqlMapSession.Gets the delegate.protected SqlMapSessionImplGets the local sql map session.Gets the mapped statement.Gets the result object factory.Deprecated.Use openSession()Gets the sql executor.Deprecated.Executes a mapped SQL INSERT statement.Executes a mapped SQL INSERT statement.booleanChecks if is enhancement enabled.booleanChecks if is lazy loading enabled.Returns a single threaded SqlMapSession implementation for use by one user.openSession(Connection conn) Returns a single threaded SqlMapSession implementation for use by one user.queryForList(String id) Executes a mapped SQL SELECT statement that returns data to populate a number of result objects.queryForList(String id, int skip, int max) Executes a mapped SQL SELECT statement that returns data to populate a number of result objects within a certain range.queryForList(String id, Object paramObject) Executes a mapped SQL SELECT statement that returns data to populate a number of result objects.queryForList(String id, Object paramObject, int skip, int max) Executes a mapped SQL SELECT statement that returns data to populate a number of result objects within a certain range.queryForMap(String id, Object paramObject, String keyProp) Executes a mapped SQL SELECT statement that returns data to populate a number of result objects that will be keyed into a Map.queryForMap(String id, Object paramObject, String keyProp, String valueProp) Executes a mapped SQL SELECT statement that returns data to populate a number of result objects from which one property will be keyed into a Map.queryForObject(String id) Executes a mapped SQL SELECT statement that returns data to populate a single object instance.queryForObject(String id, Object paramObject) Executes a mapped SQL SELECT statement that returns data to populate a single object instance.queryForObject(String id, Object paramObject, Object resultObject) Executes a mapped SQL SELECT statement that returns data to populate the supplied result object.queryForPaginatedList(String id, int pageSize) Deprecated.All paginated list features have been deprecatedqueryForPaginatedList(String id, Object paramObject, int pageSize) Deprecated.All paginated list features have been deprecatedvoidqueryWithRowHandler(String id, RowHandler rowHandler) Executes a mapped SQL SELECT statement that returns a number of result objects that will be handled one at a time by a RowHandler.voidqueryWithRowHandler(String id, Object paramObject, RowHandler rowHandler) Executes a mapped SQL SELECT statement that returns a number of result objects that will be handled one at a time by a RowHandler.voidsetUserConnection(Connection connection) Allows the developer to easily use an externally supplied connection when executing statements.voidStarts a batch in which update statements will be cached before being sent to the database all at once.voidDemarcates the beginning of a transaction scope.voidstartTransaction(int transactionIsolation) Demarcates the beginning of a transaction scope using the specified transaction isolation.intExecutes a mapped SQL UPDATE statement.intExecutes a mapped SQL UPDATE statement.
-
Field Details
-
delegate
Delegate for SQL execution. -
localSqlMapSession
The local sql map session.
-
-
Constructor Details
-
SqlMapClientImpl
Constructor to supply a delegate.- Parameters:
delegate- - the delegate
-
-
Method Details
-
insert
Description copied from interface:SqlMapExecutorExecutes a mapped SQL INSERT statement. Insert is a bit different from other update methods, as it provides facilities for returning the primary key of the newly inserted row (rather than the effected rows). This functionality is of course optional.The parameter object is generally used to supply the input data for the INSERT values.
- Specified by:
insertin interfaceExtendedSqlMapClient- Specified by:
insertin interfaceSqlMapExecutor- Parameters:
id- The name of the statement to execute.param- The parameter object (e.g. JavaBean, Map, XML etc.).- Returns:
- The primary key of the newly inserted row. This might be automatically generated by the RDBMS, or selected from a sequence table or other source.
- Throws:
SQLException- the SQL exception
-
insert
Description copied from interface:SqlMapExecutorExecutes a mapped SQL INSERT statement. Insert is a bit different from other update methods, as it provides facilities for returning the primary key of the newly inserted row (rather than the effected rows). This functionality is of course optional.This overload assumes no parameter is needed.
- Specified by:
insertin interfaceExtendedSqlMapClient- Specified by:
insertin interfaceSqlMapExecutor- Parameters:
id- The name of the statement to execute.- Returns:
- The primary key of the newly inserted row. This might be automatically generated by the RDBMS, or selected from a sequence table or other source.
- Throws:
SQLException- the SQL exception
-
update
Description copied from interface:SqlMapExecutorExecutes a mapped SQL UPDATE statement. Update can also be used for any other update statement type, such as inserts and deletes. Update returns the number of rows effected.The parameter object is generally used to supply the input data for the UPDATE values as well as the WHERE clause parameter(s).
- Specified by:
updatein interfaceExtendedSqlMapClient- Specified by:
updatein interfaceSqlMapExecutor- Parameters:
id- The name of the statement to execute.param- The parameter object (e.g. JavaBean, Map, XML etc.).- Returns:
- The number of rows effected.
- Throws:
SQLException- the SQL exception
-
update
Description copied from interface:SqlMapExecutorExecutes a mapped SQL UPDATE statement. Update can also be used for any other update statement type, such as inserts and deletes. Update returns the number of rows effected.This overload assumes no parameter is needed.
- Specified by:
updatein interfaceExtendedSqlMapClient- Specified by:
updatein interfaceSqlMapExecutor- Parameters:
id- The name of the statement to execute.- Returns:
- The number of rows effected.
- Throws:
SQLException- the SQL exception
-
delete
Description copied from interface:SqlMapExecutorExecutes a mapped SQL DELETE statement. Delete returns the number of rows effected.The parameter object is generally used to supply the input data for the WHERE clause parameter(s) of the DELETE statement.
- Specified by:
deletein interfaceExtendedSqlMapClient- Specified by:
deletein interfaceSqlMapExecutor- Parameters:
id- The name of the statement to execute.param- The parameter object (e.g. JavaBean, Map, XML etc.).- Returns:
- The number of rows effected.
- Throws:
SQLException- the SQL exception
-
delete
Description copied from interface:SqlMapExecutorExecutes a mapped SQL DELETE statement. Delete returns the number of rows effected.This overload assumes no parameter is needed.
- Specified by:
deletein interfaceExtendedSqlMapClient- Specified by:
deletein interfaceSqlMapExecutor- Parameters:
id- The name of the statement to execute.- Returns:
- The number of rows effected.
- Throws:
SQLException- the SQL exception
-
queryForObject
Description copied from interface:SqlMapExecutorExecutes a mapped SQL SELECT statement that returns data to populate a single object instance.The parameter object is generally used to supply the input data for the WHERE clause parameter(s) of the SELECT statement.
- Specified by:
queryForObjectin interfaceExtendedSqlMapClient- Specified by:
queryForObjectin interfaceSqlMapExecutor- Parameters:
id- The name of the statement to execute.paramObject- The parameter object (e.g. JavaBean, Map, XML etc.).- Returns:
- The single result object populated with the result set data, or null if no result was found
- Throws:
SQLException- the SQL exception
-
queryForObject
Description copied from interface:SqlMapExecutorExecutes a mapped SQL SELECT statement that returns data to populate a single object instance.This overload assumes no parameter is needed.
- Specified by:
queryForObjectin interfaceExtendedSqlMapClient- Specified by:
queryForObjectin interfaceSqlMapExecutor- Parameters:
id- The name of the statement to execute.- Returns:
- The single result object populated with the result set data, or null if no result was found
- Throws:
SQLException- the SQL exception
-
queryForObject
public Object queryForObject(String id, Object paramObject, Object resultObject) throws SQLException Description copied from interface:SqlMapExecutorExecutes a mapped SQL SELECT statement that returns data to populate the supplied result object.The parameter object is generally used to supply the input data for the WHERE clause parameter(s) of the SELECT statement.
- Specified by:
queryForObjectin interfaceExtendedSqlMapClient- Specified by:
queryForObjectin interfaceSqlMapExecutor- Parameters:
id- The name of the statement to execute.paramObject- The parameter object (e.g. JavaBean, Map, XML etc.).resultObject- The result object instance that should be populated with result data.- Returns:
- The single result object as supplied by the resultObject parameter, populated with the result set data, or null if no result was found
- Throws:
SQLException- the SQL exception
-
queryForList
Description copied from interface:SqlMapExecutorExecutes a mapped SQL SELECT statement that returns data to populate a number of result objects.The parameter object is generally used to supply the input data for the WHERE clause parameter(s) of the SELECT statement.
- Specified by:
queryForListin interfaceExtendedSqlMapClient- Specified by:
queryForListin interfaceSqlMapExecutor- Parameters:
id- The name of the statement to execute.paramObject- The parameter object (e.g. JavaBean, Map, XML etc.).- Returns:
- A List of result objects.
- Throws:
SQLException- the SQL exception
-
queryForList
Description copied from interface:SqlMapExecutorExecutes a mapped SQL SELECT statement that returns data to populate a number of result objects.This overload assumes no parameter is needed.
- Specified by:
queryForListin interfaceExtendedSqlMapClient- Specified by:
queryForListin interfaceSqlMapExecutor- Parameters:
id- The name of the statement to execute.- Returns:
- A List of result objects.
- Throws:
SQLException- the SQL exception
-
queryForList
Description copied from interface:SqlMapExecutorExecutes a mapped SQL SELECT statement that returns data to populate a number of result objects within a certain range.The parameter object is generally used to supply the input data for the WHERE clause parameter(s) of the SELECT statement.
- Specified by:
queryForListin interfaceExtendedSqlMapClient- Specified by:
queryForListin interfaceSqlMapExecutor- Parameters:
id- The name of the statement to execute.paramObject- The parameter object (e.g. JavaBean, Map, XML etc.).skip- The number of results to ignore.max- The maximum number of results to return.- Returns:
- A List of result objects.
- Throws:
SQLException- the SQL exception
-
queryForList
Description copied from interface:SqlMapExecutorExecutes a mapped SQL SELECT statement that returns data to populate a number of result objects within a certain range.This overload assumes no parameter is needed.
- Specified by:
queryForListin interfaceExtendedSqlMapClient- Specified by:
queryForListin interfaceSqlMapExecutor- Parameters:
id- The name of the statement to execute.skip- The number of results to ignore.max- The maximum number of results to return.- Returns:
- A List of result objects.
- Throws:
SQLException- the SQL exception
-
queryForPaginatedList
public PaginatedList queryForPaginatedList(String id, Object paramObject, int pageSize) throws SQLException Deprecated.All paginated list features have been deprecatedDescription copied from interface:SqlMapExecutorExecutes a mapped SQL SELECT statement that returns data to populate a number of result objects a page at a time.The parameter object is generally used to supply the input data for the WHERE clause parameter(s) of the SELECT statement.
- Specified by:
queryForPaginatedListin interfaceExtendedSqlMapClient- Specified by:
queryForPaginatedListin interfaceSqlMapExecutor- Parameters:
id- The name of the statement to execute.paramObject- The parameter object (e.g. JavaBean, Map, XML etc.).pageSize- The maximum number of result objects each page can hold.- Returns:
- A PaginatedList of result objects.
- Throws:
SQLException- the SQL exception
-
queryForPaginatedList
Deprecated.All paginated list features have been deprecatedDescription copied from interface:SqlMapExecutorExecutes a mapped SQL SELECT statement that returns data to populate a number of result objects a page at a time.This overload assumes no parameter is needed.
- Specified by:
queryForPaginatedListin interfaceExtendedSqlMapClient- Specified by:
queryForPaginatedListin interfaceSqlMapExecutor- Parameters:
id- The name of the statement to execute.pageSize- The maximum number of result objects each page can hold.- Returns:
- A PaginatedList of result objects.
- Throws:
SQLException- the SQL exception
-
queryForMap
Description copied from interface:SqlMapExecutorExecutes a mapped SQL SELECT statement that returns data to populate a number of result objects that will be keyed into a Map.The parameter object is generally used to supply the input data for the WHERE clause parameter(s) of the SELECT statement.
- Specified by:
queryForMapin interfaceExtendedSqlMapClient- Specified by:
queryForMapin interfaceSqlMapExecutor- Parameters:
id- The name of the statement to execute.paramObject- The parameter object (e.g. JavaBean, Map, XML etc.).keyProp- The property to be used as the key in the Map.- Returns:
- A Map keyed by keyProp with values being the result object instance.
- Throws:
SQLException- the SQL exception
-
queryForMap
public Map queryForMap(String id, Object paramObject, String keyProp, String valueProp) throws SQLException Description copied from interface:SqlMapExecutorExecutes a mapped SQL SELECT statement that returns data to populate a number of result objects from which one property will be keyed into a Map.The parameter object is generally used to supply the input data for the WHERE clause parameter(s) of the SELECT statement.
- Specified by:
queryForMapin interfaceExtendedSqlMapClient- Specified by:
queryForMapin interfaceSqlMapExecutor- Parameters:
id- The name of the statement to execute.paramObject- The parameter object (e.g. JavaBean, Map, XML etc.).keyProp- The property to be used as the key in the Map.valueProp- The property to be used as the value in the Map.- Returns:
- A Map keyed by keyProp with values of valueProp.
- Throws:
SQLException- the SQL exception
-
queryWithRowHandler
public void queryWithRowHandler(String id, Object paramObject, RowHandler rowHandler) throws SQLException Description copied from interface:SqlMapExecutorExecutes a mapped SQL SELECT statement that returns a number of result objects that will be handled one at a time by a RowHandler.This is generally a good approach to take when dealing with large sets of records (i.e. hundreds, thousands...) that need to be processed without eating up all of the system resources.
The parameter object is generally used to supply the input data for the WHERE clause parameter(s) of the SELECT statement.
- Specified by:
queryWithRowHandlerin interfaceExtendedSqlMapClient- Specified by:
queryWithRowHandlerin interfaceSqlMapExecutor- Parameters:
id- The name of the statement to execute.paramObject- The parameter object (e.g. JavaBean, Map, XML etc.).rowHandler- A RowHandler instance- Throws:
SQLException- the SQL exception
-
queryWithRowHandler
Description copied from interface:SqlMapExecutorExecutes a mapped SQL SELECT statement that returns a number of result objects that will be handled one at a time by a RowHandler.This is generally a good approach to take when dealing with large sets of records (i.e. hundreds, thousands...) that need to be processed without eating up all of the system resources.
This overload assumes no parameter is needed.
- Specified by:
queryWithRowHandlerin interfaceExtendedSqlMapClient- Specified by:
queryWithRowHandlerin interfaceSqlMapExecutor- Parameters:
id- The name of the statement to execute.rowHandler- A RowHandler instance- Throws:
SQLException- the SQL exception
-
startTransaction
Description copied from interface:SqlMapTransactionManagerDemarcates the beginning of a transaction scope. Transactions must be properly committed or rolled back to be effective. Use the following pattern when working with transactions:try { sqlMap.startTransaction(); // do work sqlMap.commitTransaction(); } finally { sqlMap.endTransaction(); }Always call endTransaction() once startTransaction() has been called.
- Specified by:
startTransactionin interfaceExtendedSqlMapClient- Specified by:
startTransactionin interfaceSqlMapTransactionManager- Throws:
SQLException- the SQL exception
-
startTransaction
Description copied from interface:SqlMapTransactionManagerDemarcates the beginning of a transaction scope using the specified transaction isolation. Transactions must be properly committed or rolled back to be effective. Use the following pattern when working with transactions:try { sqlMap.startTransaction(Connection.TRANSACTION_REPEATABLE_READ); // do work sqlMap.commitTransaction(); } finally { sqlMap.endTransaction(); }Always call endTransaction() once startTransaction() has been called.
- Specified by:
startTransactionin interfaceExtendedSqlMapClient- Specified by:
startTransactionin interfaceSqlMapTransactionManager- Parameters:
transactionIsolation- the transaction isolation- Throws:
SQLException- the SQL exception
-
commitTransaction
Description copied from interface:SqlMapTransactionManagerCommits the currently started transaction.- Specified by:
commitTransactionin interfaceExtendedSqlMapClient- Specified by:
commitTransactionin interfaceSqlMapTransactionManager- Throws:
SQLException- If an error occurs while committing the transaction, or the transaction could not be committed.
-
endTransaction
Description copied from interface:SqlMapTransactionManagerEnds a transaction and rolls back if necessary. If the transaction has been started, but not committed, it will be rolled back upon calling endTransaction().- Specified by:
endTransactionin interfaceExtendedSqlMapClient- Specified by:
endTransactionin interfaceSqlMapTransactionManager- Throws:
SQLException- If an error occurs during rollback or the transaction could not be ended.
-
startBatch
Description copied from interface:SqlMapExecutorStarts a batch in which update statements will be cached before being sent to the database all at once. This can improve overall performance of updates update when dealing with numerous updates (e.g. inserting 1:M related data).- Specified by:
startBatchin interfaceExtendedSqlMapClient- Specified by:
startBatchin interfaceSqlMapExecutor- Throws:
SQLException- the SQL exception
-
executeBatch
Description copied from interface:SqlMapExecutorExecutes (flushes) all statements currently batched.- Specified by:
executeBatchin interfaceExtendedSqlMapClient- Specified by:
executeBatchin interfaceSqlMapExecutor- Returns:
- the number of rows updated in the batch
- Throws:
SQLException- the SQL exception
-
executeBatchDetailed
Description copied from interface:SqlMapExecutorExecutes (flushes) all statements currently batched.- Specified by:
executeBatchDetailedin interfaceExtendedSqlMapClient- Specified by:
executeBatchDetailedin interfaceSqlMapExecutor- Returns:
- a List of BatchResult objects. There will be one element in the list for each sub-batch executed. A sub-batch is created by adding a statement to the batch that does not equal the prior statement.
- Throws:
SQLException- if a database access error occurs, or the drive does not support batch statementsBatchException- if the driver throws BatchUpdateException- See Also:
-
setUserConnection
Description copied from interface:SqlMapTransactionManagerAllows the developer to easily use an externally supplied connection when executing statements.Important: Using a user supplied connection basically sidesteps the transaction manager, so you are responsible for appropriately. Here's a (very) simple example (throws SQLException):
try { Connection connection = dataSource.getConnection(); sqlMap.setUserConnection(connection); // do work connection.commit(); } catch (SQLException e) { try { if (connection != null) commit.rollback(); } catch (SQLException ignored) { // generally ignored } throw e; // rethrow the exception } finally { try { if (connection != null) connection.close(); } catch (SQLException ignored) { // generally ignored } }- Specified by:
setUserConnectionin interfaceExtendedSqlMapClient- Specified by:
setUserConnectionin interfaceSqlMapTransactionManager- Parameters:
connection- the new user connection- Throws:
SQLException- the SQL exception
-
getUserConnection
Deprecated.TODO Deprecated.- Specified by:
getUserConnectionin interfaceExtendedSqlMapClient- Specified by:
getUserConnectionin interfaceSqlMapTransactionManager- Returns:
- Current connection
- Throws:
SQLException- the SQL exception
-
getCurrentConnection
Description copied from interface:SqlMapTransactionManagerReturns the current connection in use. If no connection exists null will be returned. There may be no connection if no transaction has been started, and if no user provided connection has been set.- Specified by:
getCurrentConnectionin interfaceExtendedSqlMapClient- Specified by:
getCurrentConnectionin interfaceSqlMapTransactionManager- Returns:
- The current connection or null.
- Throws:
SQLException- the SQL exception
-
getDataSource
Description copied from interface:SqlMapTransactionManagerReturns the DataSource instance currently being used by the SqlMapSession.- Specified by:
getDataSourcein interfaceExtendedSqlMapClient- Specified by:
getDataSourcein interfaceSqlMapTransactionManager- Returns:
- The DataSource instance currently being used by the SqlMapSession.
-
getMappedStatement
Description copied from interface:ExtendedSqlMapClientGets the mapped statement.- Specified by:
getMappedStatementin interfaceExtendedSqlMapClient- Parameters:
id- the id- Returns:
- the mapped statement
-
isLazyLoadingEnabled
public boolean isLazyLoadingEnabled()Description copied from interface:ExtendedSqlMapClientChecks if is lazy loading enabled.- Specified by:
isLazyLoadingEnabledin interfaceExtendedSqlMapClient- Returns:
- true, if is lazy loading enabled
-
isEnhancementEnabled
public boolean isEnhancementEnabled()Description copied from interface:ExtendedSqlMapClientChecks if is enhancement enabled.- Specified by:
isEnhancementEnabledin interfaceExtendedSqlMapClient- Returns:
- true, if is enhancement enabled
-
getSqlExecutor
Description copied from interface:ExtendedSqlMapClientGets the sql executor.- Specified by:
getSqlExecutorin interfaceExtendedSqlMapClient- Returns:
- the sql executor
-
getDelegate
Description copied from interface:ExtendedSqlMapClientGets the delegate.- Specified by:
getDelegatein interfaceExtendedSqlMapClient- Returns:
- the delegate
-
openSession
Description copied from interface:SqlMapClientReturns a single threaded SqlMapSession implementation for use by one user. Remember though, that SqlMapClient itself is a thread safe SqlMapSession implementation, so you can also just work directly with it. If you do get a session explicitly using this method be sure to close it! You can close a session using the sqlMapSession.close() method.- Specified by:
openSessionin interfaceExtendedSqlMapClient- Specified by:
openSessionin interfaceSqlMapClient- Returns:
- An SqlMapSession instance.
-
openSession
Description copied from interface:SqlMapClientReturns a single threaded SqlMapSession implementation for use by one user. Remember though, that SqlMapClient itself is a thread safe SqlMapSession implementation, so you can also just work directly with it. If you do get a session explicitly using this method be sure to close it! You can close a session using the SqlMapSession.close() method.This particular implementation takes a user provided connection as a parameter. This connection will be used for executing statements, and therefore overrides any configured datasources. Using this approach allows the developer to easily use an externally supplied connection for executing statements.
Important: Using a user supplied connection basically sidesteps the datasource so you are responsible for appropriately handling your connection lifecycle (i.e. closing). Here's a (very) simple example (throws SQLException):
try { Connection connection = dataSource.getConnection(); SqlMapSession session = sqlMap.openSession(connection); // do work connection.commit(); } catch (SQLException e) { try { if (connection != null) commit.rollback(); } catch (SQLException ignored) { // generally ignored } throw e; // rethrow the exception } finally { try { if (connection != null) connection.close(); } catch (SQLException ignored) { // generally ignored } }- Specified by:
openSessionin interfaceExtendedSqlMapClient- Specified by:
openSessionin interfaceSqlMapClient- Parameters:
conn- - the connection to use for the session- Returns:
- An SqlMapSession instance.
-
getSession
Deprecated.Use openSession()TODO : DEPRECATED- Specified by:
getSessionin interfaceExtendedSqlMapClient- Specified by:
getSessionin interfaceSqlMapClient- Returns:
- A session (DEPRECATED)
-
flushDataCache
public void flushDataCache()Description copied from interface:SqlMapClientFlushes all data caches.- Specified by:
flushDataCachein interfaceExtendedSqlMapClient- Specified by:
flushDataCachein interfaceSqlMapClient
-
flushDataCache
Description copied from interface:SqlMapClientFlushes the data cache that matches the cache model ID provided. cacheId should include the namespace, even when useStatementNamespaces="false".- Specified by:
flushDataCachein interfaceExtendedSqlMapClient- Specified by:
flushDataCachein interfaceSqlMapClient- Parameters:
cacheId- The cache model to flush
-
getLocalSqlMapSession
Gets the local sql map session.- Returns:
- the local sql map session
-
getResultObjectFactory
Description copied from interface:ExtendedSqlMapClientGets the result object factory.- Specified by:
getResultObjectFactoryin interfaceExtendedSqlMapClient- Returns:
- the result object factory
-