Class SqlSessionTemplate

java.lang.Object
org.mybatis.spring.SqlSessionTemplate
All Implemented Interfaces:
Closeable, AutoCloseable, org.apache.ibatis.session.SqlSession, org.springframework.beans.factory.DisposableBean

public class SqlSessionTemplate extends 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 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:
  • Constructor Details

    • 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 Details

    • 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(String statement)
      Specified by:
      selectOne in interface org.apache.ibatis.session.SqlSession
    • selectOne

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

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

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

      public <K, V> Map<K,V> selectMap(String statement, Object parameter, 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(String statement)
      Specified by:
      selectCursor in interface org.apache.ibatis.session.SqlSession
    • selectCursor

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

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

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

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

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

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

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

      public void select(String statement, 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(String statement)
      Specified by:
      insert in interface org.apache.ibatis.session.SqlSession
    • insert

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

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

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

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

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

      public <T> T getMapper(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 AutoCloseable
      Specified by:
      close in interface 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 Connection getConnection()
      Specified by:
      getConnection in interface org.apache.ibatis.session.SqlSession
    • flushStatements

      public 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() throws Exception
      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
      Throws:
      Exception
      See Also:
      • close()
      • "org.springframework.beans.factory.support.DisposableBeanAdapter#inferDestroyMethodIfNecessary(Object, RootBeanDefinition)"
      • "org.springframework.beans.factory.support.DisposableBeanAdapter#CLOSE_METHOD_NAME"