Class SqlSessionTemplate

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, org.apache.ibatis.session.SqlSession, org.springframework.beans.factory.DisposableBean

    public class SqlSessionTemplate
    extends java.lang.Object
    implements org.apache.ibatis.session.SqlSession, org.springframework.beans.factory.DisposableBean
    Thread safe, Spring managed, SqlSession that works with Spring transaction management to ensure that that the actual SqlSession used is the one associated with the current Spring transaction. In addition, it manages the session life-cycle, including closing, committing or rolling back the session as necessary based on the Spring transaction configuration.

    The template needs a SqlSessionFactory to create SqlSessions, passed as a constructor argument. It also can be constructed indicating the executor type to be used, if not, the default executor type, defined in the session factory will be used.

    This template converts MyBatis PersistenceExceptions into unchecked DataAccessExceptions, using, by default, a MyBatisExceptionTranslator.

    Because SqlSessionTemplate is thread safe, a single instance can be shared by all DAOs; there should also be a small memory savings by doing this. This pattern can be used in Spring configuration files as follows:

     
     <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
       <constructor-arg ref="sqlSessionFactory" />
     </bean>
     
     
    Author:
    Putthiphong Boonphong, Hunter Presnall, Eduardo Macarron
    See Also:
    SqlSessionFactory, MyBatisExceptionTranslator
    • Constructor Summary

      Constructors 
      Constructor Description
      SqlSessionTemplate​(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory)
      Constructs a Spring managed SqlSession with the SqlSessionFactory provided as an argument.
      SqlSessionTemplate​(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, org.apache.ibatis.session.ExecutorType executorType)
      Constructs a Spring managed SqlSession with the SqlSessionFactory provided as an argument and the given ExecutorType ExecutorType cannot be changed once the SqlSessionTemplate is constructed.
      SqlSessionTemplate​(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, org.apache.ibatis.session.ExecutorType executorType, org.springframework.dao.support.PersistenceExceptionTranslator exceptionTranslator)
      Constructs a Spring managed SqlSession with the given SqlSessionFactory and ExecutorType.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void clearCache()
      void close()
      void commit()
      void commit​(boolean force)
      int delete​(java.lang.String statement)
      int delete​(java.lang.String statement, java.lang.Object parameter)
      void destroy()
      Allow gently dispose bean:
      java.util.List<org.apache.ibatis.executor.BatchResult> flushStatements()
      org.apache.ibatis.session.Configuration getConfiguration()
      java.sql.Connection getConnection()
      org.apache.ibatis.session.ExecutorType getExecutorType()  
      <T> T getMapper​(java.lang.Class<T> type)
      org.springframework.dao.support.PersistenceExceptionTranslator getPersistenceExceptionTranslator()  
      org.apache.ibatis.session.SqlSessionFactory getSqlSessionFactory()  
      int insert​(java.lang.String statement)
      int insert​(java.lang.String statement, java.lang.Object parameter)
      void rollback()
      void rollback​(boolean force)
      void select​(java.lang.String statement, java.lang.Object parameter, org.apache.ibatis.session.ResultHandler handler)
      void select​(java.lang.String statement, java.lang.Object parameter, org.apache.ibatis.session.RowBounds rowBounds, org.apache.ibatis.session.ResultHandler handler)
      void select​(java.lang.String statement, org.apache.ibatis.session.ResultHandler handler)
      <T> org.apache.ibatis.cursor.Cursor<T> selectCursor​(java.lang.String statement)
      <T> org.apache.ibatis.cursor.Cursor<T> selectCursor​(java.lang.String statement, java.lang.Object parameter)
      <T> org.apache.ibatis.cursor.Cursor<T> selectCursor​(java.lang.String statement, java.lang.Object parameter, org.apache.ibatis.session.RowBounds rowBounds)
      <E> java.util.List<E> selectList​(java.lang.String statement)
      <E> java.util.List<E> selectList​(java.lang.String statement, java.lang.Object parameter)
      <E> java.util.List<E> selectList​(java.lang.String statement, java.lang.Object parameter, org.apache.ibatis.session.RowBounds rowBounds)
      <K,​V>
      java.util.Map<K,​V>
      selectMap​(java.lang.String statement, java.lang.Object parameter, java.lang.String mapKey)
      <K,​V>
      java.util.Map<K,​V>
      selectMap​(java.lang.String statement, java.lang.Object parameter, java.lang.String mapKey, org.apache.ibatis.session.RowBounds rowBounds)
      <K,​V>
      java.util.Map<K,​V>
      selectMap​(java.lang.String statement, java.lang.String mapKey)
      <T> T selectOne​(java.lang.String statement)
      <T> T selectOne​(java.lang.String statement, java.lang.Object parameter)
      int update​(java.lang.String statement)
      int update​(java.lang.String statement, java.lang.Object parameter)
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • SqlSessionTemplate

        public SqlSessionTemplate​(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory)
        Constructs a Spring managed SqlSession with the SqlSessionFactory provided as an argument.
        Parameters:
        sqlSessionFactory - a factory of SqlSession
      • SqlSessionTemplate

        public SqlSessionTemplate​(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory,
                                  org.apache.ibatis.session.ExecutorType executorType)
        Constructs a Spring managed SqlSession with the SqlSessionFactory provided as an argument and the given ExecutorType ExecutorType cannot be changed once the SqlSessionTemplate is constructed.
        Parameters:
        sqlSessionFactory - a factory of SqlSession
        executorType - an executor type on session
      • SqlSessionTemplate

        public SqlSessionTemplate​(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory,
                                  org.apache.ibatis.session.ExecutorType executorType,
                                  org.springframework.dao.support.PersistenceExceptionTranslator exceptionTranslator)
        Constructs a Spring managed SqlSession with the given SqlSessionFactory and ExecutorType. A custom SQLExceptionTranslator can be provided as an argument so any PersistenceException thrown by MyBatis can be custom translated to a RuntimeException The SQLExceptionTranslator can also be null and thus no exception translation will be done and MyBatis exceptions will be thrown
        Parameters:
        sqlSessionFactory - a factory of SqlSession
        executorType - an executor type on session
        exceptionTranslator - a translator of exception
    • Method Detail

      • getSqlSessionFactory

        public org.apache.ibatis.session.SqlSessionFactory getSqlSessionFactory()
      • getExecutorType

        public org.apache.ibatis.session.ExecutorType getExecutorType()
      • getPersistenceExceptionTranslator

        public org.springframework.dao.support.PersistenceExceptionTranslator getPersistenceExceptionTranslator()
      • selectOne

        public <T> T selectOne​(java.lang.String statement)
        Specified by:
        selectOne in interface org.apache.ibatis.session.SqlSession
      • selectOne

        public <T> T selectOne​(java.lang.String statement,
                               java.lang.Object parameter)
        Specified by:
        selectOne in interface org.apache.ibatis.session.SqlSession
      • selectMap

        public <K,​V> java.util.Map<K,​V> selectMap​(java.lang.String statement,
                                                              java.lang.String mapKey)
        Specified by:
        selectMap in interface org.apache.ibatis.session.SqlSession
      • selectMap

        public <K,​V> java.util.Map<K,​V> selectMap​(java.lang.String statement,
                                                              java.lang.Object parameter,
                                                              java.lang.String mapKey)
        Specified by:
        selectMap in interface org.apache.ibatis.session.SqlSession
      • selectMap

        public <K,​V> java.util.Map<K,​V> selectMap​(java.lang.String statement,
                                                              java.lang.Object parameter,
                                                              java.lang.String mapKey,
                                                              org.apache.ibatis.session.RowBounds rowBounds)
        Specified by:
        selectMap in interface org.apache.ibatis.session.SqlSession
      • selectCursor

        public <T> org.apache.ibatis.cursor.Cursor<T> selectCursor​(java.lang.String statement)
        Specified by:
        selectCursor in interface org.apache.ibatis.session.SqlSession
      • selectCursor

        public <T> org.apache.ibatis.cursor.Cursor<T> selectCursor​(java.lang.String statement,
                                                                   java.lang.Object parameter)
        Specified by:
        selectCursor in interface org.apache.ibatis.session.SqlSession
      • selectCursor

        public <T> org.apache.ibatis.cursor.Cursor<T> selectCursor​(java.lang.String statement,
                                                                   java.lang.Object parameter,
                                                                   org.apache.ibatis.session.RowBounds rowBounds)
        Specified by:
        selectCursor in interface org.apache.ibatis.session.SqlSession
      • selectList

        public <E> java.util.List<E> selectList​(java.lang.String statement)
        Specified by:
        selectList in interface org.apache.ibatis.session.SqlSession
      • selectList

        public <E> java.util.List<E> selectList​(java.lang.String statement,
                                                java.lang.Object parameter)
        Specified by:
        selectList in interface org.apache.ibatis.session.SqlSession
      • selectList

        public <E> java.util.List<E> selectList​(java.lang.String statement,
                                                java.lang.Object parameter,
                                                org.apache.ibatis.session.RowBounds rowBounds)
        Specified by:
        selectList in interface org.apache.ibatis.session.SqlSession
      • select

        public void select​(java.lang.String statement,
                           org.apache.ibatis.session.ResultHandler handler)
        Specified by:
        select in interface org.apache.ibatis.session.SqlSession
      • select

        public void select​(java.lang.String statement,
                           java.lang.Object parameter,
                           org.apache.ibatis.session.ResultHandler handler)
        Specified by:
        select in interface org.apache.ibatis.session.SqlSession
      • select

        public void select​(java.lang.String statement,
                           java.lang.Object parameter,
                           org.apache.ibatis.session.RowBounds rowBounds,
                           org.apache.ibatis.session.ResultHandler handler)
        Specified by:
        select in interface org.apache.ibatis.session.SqlSession
      • insert

        public int insert​(java.lang.String statement)
        Specified by:
        insert in interface org.apache.ibatis.session.SqlSession
      • insert

        public int insert​(java.lang.String statement,
                          java.lang.Object parameter)
        Specified by:
        insert in interface org.apache.ibatis.session.SqlSession
      • update

        public int update​(java.lang.String statement)
        Specified by:
        update in interface org.apache.ibatis.session.SqlSession
      • update

        public int update​(java.lang.String statement,
                          java.lang.Object parameter)
        Specified by:
        update in interface org.apache.ibatis.session.SqlSession
      • delete

        public int delete​(java.lang.String statement)
        Specified by:
        delete in interface org.apache.ibatis.session.SqlSession
      • delete

        public int delete​(java.lang.String statement,
                          java.lang.Object parameter)
        Specified by:
        delete in interface org.apache.ibatis.session.SqlSession
      • getMapper

        public <T> T getMapper​(java.lang.Class<T> type)
        Specified by:
        getMapper in interface org.apache.ibatis.session.SqlSession
      • commit

        public void commit()
        Specified by:
        commit in interface org.apache.ibatis.session.SqlSession
      • commit

        public void commit​(boolean force)
        Specified by:
        commit in interface org.apache.ibatis.session.SqlSession
      • rollback

        public void rollback()
        Specified by:
        rollback in interface org.apache.ibatis.session.SqlSession
      • rollback

        public void rollback​(boolean force)
        Specified by:
        rollback in interface org.apache.ibatis.session.SqlSession
      • close

        public void close()
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Specified by:
        close in interface org.apache.ibatis.session.SqlSession
      • clearCache

        public void clearCache()
        Specified by:
        clearCache in interface org.apache.ibatis.session.SqlSession
      • getConfiguration

        public org.apache.ibatis.session.Configuration getConfiguration()
        Specified by:
        getConfiguration in interface org.apache.ibatis.session.SqlSession
      • getConnection

        public java.sql.Connection getConnection()
        Specified by:
        getConnection in interface org.apache.ibatis.session.SqlSession
      • flushStatements

        public java.util.List<org.apache.ibatis.executor.BatchResult> flushStatements()
        Specified by:
        flushStatements in interface org.apache.ibatis.session.SqlSession
        Since:
        1.0.2
      • destroy

        public void destroy()
        Allow gently dispose bean:
         
        
         <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
          <constructor-arg index="0" ref="sqlSessionFactory" />
         </bean>
         
         
        The implementation of DisposableBean forces spring context to use DisposableBean.destroy() method instead of close() to shutdown gently.
        Specified by:
        destroy in interface org.springframework.beans.factory.DisposableBean
        See Also:
        close(), "org.springframework.beans.factory.support.DisposableBeanAdapter#inferDestroyMethodIfNecessary(Object, RootBeanDefinition)", "org.springframework.beans.factory.support.DisposableBeanAdapter#CLOSE_METHOD_NAME"