Package org.mybatis.spring
Class SqlSessionTemplate
- java.lang.Object
-
- org.mybatis.spring.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 theSqlSessionFactory
provided as an argument.SqlSessionTemplate(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, org.apache.ibatis.session.ExecutorType executorType)
Constructs a Spring managed SqlSession with theSqlSessionFactory
provided as an argument and the givenExecutorType
ExecutorType
cannot be changed once theSqlSessionTemplate
is constructed.SqlSessionTemplate(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, org.apache.ibatis.session.ExecutorType executorType, org.springframework.dao.support.PersistenceExceptionTranslator exceptionTranslator)
Constructs a Spring managedSqlSession
with the givenSqlSessionFactory
andExecutorType
.
-
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)
-
-
-
Constructor Detail
-
SqlSessionTemplate
public SqlSessionTemplate(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory)
Constructs a Spring managed SqlSession with theSqlSessionFactory
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 theSqlSessionFactory
provided as an argument and the givenExecutorType
ExecutorType
cannot be changed once theSqlSessionTemplate
is constructed.- Parameters:
sqlSessionFactory
- a factory of SqlSessionexecutorType
- 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 managedSqlSession
with the givenSqlSessionFactory
andExecutorType
. A customSQLExceptionTranslator
can be provided as an argument so anyPersistenceException
thrown by MyBatis can be custom translated to aRuntimeException
TheSQLExceptionTranslator
can also be null and thus no exception translation will be done and MyBatis exceptions will be thrown- Parameters:
sqlSessionFactory
- a factory of SqlSessionexecutorType
- an executor type on sessionexceptionTranslator
- 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 interfaceorg.apache.ibatis.session.SqlSession
-
selectOne
public <T> T selectOne(java.lang.String statement, java.lang.Object parameter)
- Specified by:
selectOne
in interfaceorg.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 interfaceorg.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 interfaceorg.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 interfaceorg.apache.ibatis.session.SqlSession
-
selectCursor
public <T> org.apache.ibatis.cursor.Cursor<T> selectCursor(java.lang.String statement)
- Specified by:
selectCursor
in interfaceorg.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 interfaceorg.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 interfaceorg.apache.ibatis.session.SqlSession
-
selectList
public <E> java.util.List<E> selectList(java.lang.String statement)
- Specified by:
selectList
in interfaceorg.apache.ibatis.session.SqlSession
-
selectList
public <E> java.util.List<E> selectList(java.lang.String statement, java.lang.Object parameter)
- Specified by:
selectList
in interfaceorg.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 interfaceorg.apache.ibatis.session.SqlSession
-
select
public void select(java.lang.String statement, org.apache.ibatis.session.ResultHandler handler)
- Specified by:
select
in interfaceorg.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 interfaceorg.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 interfaceorg.apache.ibatis.session.SqlSession
-
insert
public int insert(java.lang.String statement)
- Specified by:
insert
in interfaceorg.apache.ibatis.session.SqlSession
-
insert
public int insert(java.lang.String statement, java.lang.Object parameter)
- Specified by:
insert
in interfaceorg.apache.ibatis.session.SqlSession
-
update
public int update(java.lang.String statement)
- Specified by:
update
in interfaceorg.apache.ibatis.session.SqlSession
-
update
public int update(java.lang.String statement, java.lang.Object parameter)
- Specified by:
update
in interfaceorg.apache.ibatis.session.SqlSession
-
delete
public int delete(java.lang.String statement)
- Specified by:
delete
in interfaceorg.apache.ibatis.session.SqlSession
-
delete
public int delete(java.lang.String statement, java.lang.Object parameter)
- Specified by:
delete
in interfaceorg.apache.ibatis.session.SqlSession
-
getMapper
public <T> T getMapper(java.lang.Class<T> type)
- Specified by:
getMapper
in interfaceorg.apache.ibatis.session.SqlSession
-
commit
public void commit()
- Specified by:
commit
in interfaceorg.apache.ibatis.session.SqlSession
-
commit
public void commit(boolean force)
- Specified by:
commit
in interfaceorg.apache.ibatis.session.SqlSession
-
rollback
public void rollback()
- Specified by:
rollback
in interfaceorg.apache.ibatis.session.SqlSession
-
rollback
public void rollback(boolean force)
- Specified by:
rollback
in interfaceorg.apache.ibatis.session.SqlSession
-
close
public void close()
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Specified by:
close
in interfaceorg.apache.ibatis.session.SqlSession
-
clearCache
public void clearCache()
- Specified by:
clearCache
in interfaceorg.apache.ibatis.session.SqlSession
-
getConfiguration
public org.apache.ibatis.session.Configuration getConfiguration()
- Specified by:
getConfiguration
in interfaceorg.apache.ibatis.session.SqlSession
-
getConnection
public java.sql.Connection getConnection()
- Specified by:
getConnection
in interfaceorg.apache.ibatis.session.SqlSession
-
flushStatements
public java.util.List<org.apache.ibatis.executor.BatchResult> flushStatements()
- Specified by:
flushStatements
in interfaceorg.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>
DisposableBean
forces spring context to useDisposableBean.destroy()
method instead ofclose()
to shutdown gently.- Specified by:
destroy
in interfaceorg.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"
-
-