Class SqlMapClientImpl

java.lang.Object
com.ibatis.sqlmap.engine.impl.SqlMapClientImpl
All Implemented Interfaces:
SqlMapClient, SqlMapExecutor, SqlMapTransactionManager, ExtendedSqlMapClient

public class SqlMapClientImpl extends Object implements SqlMapClient, ExtendedSqlMapClient
Implementation of ExtendedSqlMapClient.
  • Field Details

  • Constructor Details

    • SqlMapClientImpl

      public SqlMapClientImpl(SqlMapExecutorDelegate delegate)
      Constructor to supply a delegate.
      Parameters:
      delegate - - the delegate
  • Method Details

    • insert

      public Object insert(String id, Object param) throws SQLException
      Description copied from interface: SqlMapExecutor
      Executes 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:
      insert in interface ExtendedSqlMapClient
      Specified by:
      insert in interface SqlMapExecutor
      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

      public Object insert(String id) throws SQLException
      Description copied from interface: SqlMapExecutor
      Executes 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:
      insert in interface ExtendedSqlMapClient
      Specified by:
      insert in interface SqlMapExecutor
      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

      public int update(String id, Object param) throws SQLException
      Description copied from interface: SqlMapExecutor
      Executes 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:
      update in interface ExtendedSqlMapClient
      Specified by:
      update in interface SqlMapExecutor
      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

      public int update(String id) throws SQLException
      Description copied from interface: SqlMapExecutor
      Executes 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:
      update in interface ExtendedSqlMapClient
      Specified by:
      update in interface SqlMapExecutor
      Parameters:
      id - The name of the statement to execute.
      Returns:
      The number of rows effected.
      Throws:
      SQLException - the SQL exception
    • delete

      public int delete(String id, Object param) throws SQLException
      Description copied from interface: SqlMapExecutor
      Executes 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:
      delete in interface ExtendedSqlMapClient
      Specified by:
      delete in interface SqlMapExecutor
      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

      public int delete(String id) throws SQLException
      Description copied from interface: SqlMapExecutor
      Executes a mapped SQL DELETE statement. Delete returns the number of rows effected.

      This overload assumes no parameter is needed.

      Specified by:
      delete in interface ExtendedSqlMapClient
      Specified by:
      delete in interface SqlMapExecutor
      Parameters:
      id - The name of the statement to execute.
      Returns:
      The number of rows effected.
      Throws:
      SQLException - the SQL exception
    • queryForObject

      public Object queryForObject(String id, Object paramObject) throws SQLException
      Description copied from interface: SqlMapExecutor
      Executes 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:
      queryForObject in interface ExtendedSqlMapClient
      Specified by:
      queryForObject in interface SqlMapExecutor
      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

      public Object queryForObject(String id) throws SQLException
      Description copied from interface: SqlMapExecutor
      Executes a mapped SQL SELECT statement that returns data to populate a single object instance.

      This overload assumes no parameter is needed.

      Specified by:
      queryForObject in interface ExtendedSqlMapClient
      Specified by:
      queryForObject in interface SqlMapExecutor
      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: SqlMapExecutor
      Executes 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:
      queryForObject in interface ExtendedSqlMapClient
      Specified by:
      queryForObject in interface SqlMapExecutor
      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

      public List queryForList(String id, Object paramObject) throws SQLException
      Description copied from interface: SqlMapExecutor
      Executes 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:
      queryForList in interface ExtendedSqlMapClient
      Specified by:
      queryForList in interface SqlMapExecutor
      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

      public List queryForList(String id) throws SQLException
      Description copied from interface: SqlMapExecutor
      Executes a mapped SQL SELECT statement that returns data to populate a number of result objects.

      This overload assumes no parameter is needed.

      Specified by:
      queryForList in interface ExtendedSqlMapClient
      Specified by:
      queryForList in interface SqlMapExecutor
      Parameters:
      id - The name of the statement to execute.
      Returns:
      A List of result objects.
      Throws:
      SQLException - the SQL exception
    • queryForList

      public List queryForList(String id, Object paramObject, int skip, int max) throws SQLException
      Description copied from interface: SqlMapExecutor
      Executes 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:
      queryForList in interface ExtendedSqlMapClient
      Specified by:
      queryForList in interface SqlMapExecutor
      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

      public List queryForList(String id, int skip, int max) throws SQLException
      Description copied from interface: SqlMapExecutor
      Executes 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:
      queryForList in interface ExtendedSqlMapClient
      Specified by:
      queryForList in interface SqlMapExecutor
      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 deprecated
      Description copied from interface: SqlMapExecutor
      Executes 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:
      queryForPaginatedList in interface ExtendedSqlMapClient
      Specified by:
      queryForPaginatedList in interface SqlMapExecutor
      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

      public PaginatedList queryForPaginatedList(String id, int pageSize) throws SQLException
      Deprecated.
      All paginated list features have been deprecated
      Description copied from interface: SqlMapExecutor
      Executes 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:
      queryForPaginatedList in interface ExtendedSqlMapClient
      Specified by:
      queryForPaginatedList in interface SqlMapExecutor
      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

      public Map queryForMap(String id, Object paramObject, String keyProp) throws SQLException
      Description copied from interface: SqlMapExecutor
      Executes 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:
      queryForMap in interface ExtendedSqlMapClient
      Specified by:
      queryForMap in interface SqlMapExecutor
      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: SqlMapExecutor
      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.

      The parameter object is generally used to supply the input data for the WHERE clause parameter(s) of the SELECT statement.

      Specified by:
      queryForMap in interface ExtendedSqlMapClient
      Specified by:
      queryForMap in interface SqlMapExecutor
      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: SqlMapExecutor
      Executes 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:
      queryWithRowHandler in interface ExtendedSqlMapClient
      Specified by:
      queryWithRowHandler in interface SqlMapExecutor
      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

      public void queryWithRowHandler(String id, RowHandler rowHandler) throws SQLException
      Description copied from interface: SqlMapExecutor
      Executes 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:
      queryWithRowHandler in interface ExtendedSqlMapClient
      Specified by:
      queryWithRowHandler in interface SqlMapExecutor
      Parameters:
      id - The name of the statement to execute.
      rowHandler - A RowHandler instance
      Throws:
      SQLException - the SQL exception
    • startTransaction

      public void startTransaction() throws SQLException
      Description copied from interface: SqlMapTransactionManager
      Demarcates 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:
      startTransaction in interface ExtendedSqlMapClient
      Specified by:
      startTransaction in interface SqlMapTransactionManager
      Throws:
      SQLException - the SQL exception
    • startTransaction

      public void startTransaction(int transactionIsolation) throws SQLException
      Description copied from interface: SqlMapTransactionManager
      Demarcates 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:
      startTransaction in interface ExtendedSqlMapClient
      Specified by:
      startTransaction in interface SqlMapTransactionManager
      Parameters:
      transactionIsolation - the transaction isolation
      Throws:
      SQLException - the SQL exception
    • commitTransaction

      public void commitTransaction() throws SQLException
      Description copied from interface: SqlMapTransactionManager
      Commits the currently started transaction.
      Specified by:
      commitTransaction in interface ExtendedSqlMapClient
      Specified by:
      commitTransaction in interface SqlMapTransactionManager
      Throws:
      SQLException - If an error occurs while committing the transaction, or the transaction could not be committed.
    • endTransaction

      public void endTransaction() throws SQLException
      Description copied from interface: SqlMapTransactionManager
      Ends 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:
      endTransaction in interface ExtendedSqlMapClient
      Specified by:
      endTransaction in interface SqlMapTransactionManager
      Throws:
      SQLException - If an error occurs during rollback or the transaction could not be ended.
    • startBatch

      public void startBatch() throws SQLException
      Description copied from interface: SqlMapExecutor
      Starts 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:
      startBatch in interface ExtendedSqlMapClient
      Specified by:
      startBatch in interface SqlMapExecutor
      Throws:
      SQLException - the SQL exception
    • executeBatch

      public int executeBatch() throws SQLException
      Description copied from interface: SqlMapExecutor
      Executes (flushes) all statements currently batched.
      Specified by:
      executeBatch in interface ExtendedSqlMapClient
      Specified by:
      executeBatch in interface SqlMapExecutor
      Returns:
      the number of rows updated in the batch
      Throws:
      SQLException - the SQL exception
    • executeBatchDetailed

      public List executeBatchDetailed() throws SQLException, BatchException
      Description copied from interface: SqlMapExecutor
      Executes (flushes) all statements currently batched.
      Specified by:
      executeBatchDetailed in interface ExtendedSqlMapClient
      Specified by:
      executeBatchDetailed in interface SqlMapExecutor
      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 statements
      BatchException - if the driver throws BatchUpdateException
      See Also:
    • setUserConnection

      public void setUserConnection(Connection connection) throws SQLException
      Description copied from interface: SqlMapTransactionManager
      Allows 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:
      setUserConnection in interface ExtendedSqlMapClient
      Specified by:
      setUserConnection in interface SqlMapTransactionManager
      Parameters:
      connection - the new user connection
      Throws:
      SQLException - the SQL exception
    • getUserConnection

      public Connection getUserConnection() throws SQLException
      Deprecated.
      TODO Deprecated.
      Specified by:
      getUserConnection in interface ExtendedSqlMapClient
      Specified by:
      getUserConnection in interface SqlMapTransactionManager
      Returns:
      Current connection
      Throws:
      SQLException - the SQL exception
    • getCurrentConnection

      public Connection getCurrentConnection() throws SQLException
      Description copied from interface: SqlMapTransactionManager
      Returns 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:
      getCurrentConnection in interface ExtendedSqlMapClient
      Specified by:
      getCurrentConnection in interface SqlMapTransactionManager
      Returns:
      The current connection or null.
      Throws:
      SQLException - the SQL exception
    • getDataSource

      public DataSource getDataSource()
      Description copied from interface: SqlMapTransactionManager
      Returns the DataSource instance currently being used by the SqlMapSession.
      Specified by:
      getDataSource in interface ExtendedSqlMapClient
      Specified by:
      getDataSource in interface SqlMapTransactionManager
      Returns:
      The DataSource instance currently being used by the SqlMapSession.
    • getMappedStatement

      public MappedStatement getMappedStatement(String id)
      Description copied from interface: ExtendedSqlMapClient
      Gets the mapped statement.
      Specified by:
      getMappedStatement in interface ExtendedSqlMapClient
      Parameters:
      id - the id
      Returns:
      the mapped statement
    • isLazyLoadingEnabled

      public boolean isLazyLoadingEnabled()
      Description copied from interface: ExtendedSqlMapClient
      Checks if is lazy loading enabled.
      Specified by:
      isLazyLoadingEnabled in interface ExtendedSqlMapClient
      Returns:
      true, if is lazy loading enabled
    • isEnhancementEnabled

      public boolean isEnhancementEnabled()
      Description copied from interface: ExtendedSqlMapClient
      Checks if is enhancement enabled.
      Specified by:
      isEnhancementEnabled in interface ExtendedSqlMapClient
      Returns:
      true, if is enhancement enabled
    • getSqlExecutor

      public SqlExecutor getSqlExecutor()
      Description copied from interface: ExtendedSqlMapClient
      Gets the sql executor.
      Specified by:
      getSqlExecutor in interface ExtendedSqlMapClient
      Returns:
      the sql executor
    • getDelegate

      public SqlMapExecutorDelegate getDelegate()
      Description copied from interface: ExtendedSqlMapClient
      Gets the delegate.
      Specified by:
      getDelegate in interface ExtendedSqlMapClient
      Returns:
      the delegate
    • openSession

      public SqlMapSession openSession()
      Description copied from interface: SqlMapClient
      Returns 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:
      openSession in interface ExtendedSqlMapClient
      Specified by:
      openSession in interface SqlMapClient
      Returns:
      An SqlMapSession instance.
    • openSession

      public SqlMapSession openSession(Connection conn)
      Description copied from interface: SqlMapClient
      Returns 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:
      openSession in interface ExtendedSqlMapClient
      Specified by:
      openSession in interface SqlMapClient
      Parameters:
      conn - - the connection to use for the session
      Returns:
      An SqlMapSession instance.
    • getSession

      public SqlMapSession getSession()
      Deprecated.
      Use openSession()
      TODO : DEPRECATED
      Specified by:
      getSession in interface ExtendedSqlMapClient
      Specified by:
      getSession in interface SqlMapClient
      Returns:
      A session (DEPRECATED)
    • flushDataCache

      public void flushDataCache()
      Description copied from interface: SqlMapClient
      Flushes all data caches.
      Specified by:
      flushDataCache in interface ExtendedSqlMapClient
      Specified by:
      flushDataCache in interface SqlMapClient
    • flushDataCache

      public void flushDataCache(String cacheId)
      Description copied from interface: SqlMapClient
      Flushes the data cache that matches the cache model ID provided. cacheId should include the namespace, even when useStatementNamespaces="false".
      Specified by:
      flushDataCache in interface ExtendedSqlMapClient
      Specified by:
      flushDataCache in interface SqlMapClient
      Parameters:
      cacheId - The cache model to flush
    • getLocalSqlMapSession

      protected SqlMapSessionImpl getLocalSqlMapSession()
      Gets the local sql map session.
      Returns:
      the local sql map session
    • getResultObjectFactory

      public ResultObjectFactory getResultObjectFactory()
      Description copied from interface: ExtendedSqlMapClient
      Gets the result object factory.
      Specified by:
      getResultObjectFactory in interface ExtendedSqlMapClient
      Returns:
      the result object factory