Class SqlSessionFactoryBean
- All Implemented Interfaces:
EventListener,org.springframework.beans.factory.FactoryBean<org.apache.ibatis.session.SqlSessionFactory>,org.springframework.beans.factory.InitializingBean,org.springframework.context.ApplicationListener<org.springframework.context.event.ContextRefreshedEvent>
FactoryBean that creates a MyBatis SqlSessionFactory. This is the usual way to set up a shared
MyBatis SqlSessionFactory in a Spring application context; the SqlSessionFactory can then be passed to
MyBatis-based DAOs via dependency injection.
Either DataSourceTransactionManager or JtaTransactionManager can be used for transaction demarcation
in combination with a SqlSessionFactory. JTA should be used for transactions which span multiple databases or
when container managed transactions (CMT) are being used.
- Author:
- Putthiphong Boonphong, Hunter Presnall, Eduardo Macarron, EddĂș MelĂ©ndez, Kazuki Shimizu, Jens Schauder
- See Also:
-
Field Summary
Fields inherited from interface org.springframework.beans.factory.FactoryBean
OBJECT_TYPE_ATTRIBUTE -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddMapperLocations(org.springframework.core.io.Resource... mapperLocations) Add locations of MyBatis mapper files that are going to be merged into theSqlSessionFactoryconfiguration at runtime.voidaddPlugins(org.apache.ibatis.plugin.Interceptor... plugins) Add Mybatis plugins.voidaddScriptingLanguageDrivers(org.apache.ibatis.scripting.LanguageDriver... scriptingLanguageDrivers) Add scripting language drivers.voidaddTypeAliases(Class<?>... typeAliases) Add type aliases.voidaddTypeHandlers(org.apache.ibatis.type.TypeHandler<?>... typeHandlers) Add type handlers.voidprotected org.apache.ibatis.session.SqlSessionFactoryBuild aSqlSessionFactoryinstance.org.apache.ibatis.cache.CachegetCache()Gets the Cache.org.apache.ibatis.mapping.DatabaseIdProviderGets the DatabaseIdProviderorg.apache.ibatis.session.SqlSessionFactoryClass<? extends org.apache.ibatis.session.SqlSessionFactory>Class<? extends org.apache.ibatis.io.VFS>getVfs()Gets the VFS.booleanvoidonApplicationEvent(org.springframework.context.event.ContextRefreshedEvent event) voidsetCache(org.apache.ibatis.cache.Cache cache) Sets the Cache.voidsetConfigLocation(org.springframework.core.io.Resource configLocation) Set the location of the MyBatisSqlSessionFactoryconfig file.voidsetConfiguration(org.apache.ibatis.session.Configuration configuration) Set a customized MyBatis configuration.voidsetConfigurationProperties(Properties sqlSessionFactoryProperties) Set optional properties to be passed into the SqlSession configuration, as alternative to a<properties>tag in the configuration xml file.voidsetDatabaseIdProvider(org.apache.ibatis.mapping.DatabaseIdProvider databaseIdProvider) Sets the DatabaseIdProvider.voidsetDataSource(DataSource dataSource) Set the JDBCDataSourcethat this instance should manage transactions for.voidsetDefaultEnumTypeHandler(Class<? extends org.apache.ibatis.type.TypeHandler> defaultEnumTypeHandler) Set the default type handler class for enum.voidsetDefaultScriptingLanguageDriver(Class<? extends org.apache.ibatis.scripting.LanguageDriver> defaultScriptingLanguageDriver) Set a default scripting language driver class.voidsetEnvironment(String environment) NOTE: This class overrides anyEnvironmentyou have set in the MyBatis config file.voidsetFailFast(boolean failFast) If true, a final check is done on Configuration to assure that all mapped statements are fully loaded and there is no one still pending to resolve includes.voidsetMapperLocations(org.springframework.core.io.Resource... mapperLocations) Set locations of MyBatis mapper files that are going to be merged into theSqlSessionFactoryconfiguration at runtime.voidsetObjectFactory(org.apache.ibatis.reflection.factory.ObjectFactory objectFactory) Sets the ObjectFactory.voidsetObjectWrapperFactory(org.apache.ibatis.reflection.wrapper.ObjectWrapperFactory objectWrapperFactory) Sets the ObjectWrapperFactory.voidsetPlugins(org.apache.ibatis.plugin.Interceptor... plugins) Mybatis plugin list.voidsetScriptingLanguageDrivers(org.apache.ibatis.scripting.LanguageDriver... scriptingLanguageDrivers) Set scripting language drivers.voidsetSqlSessionFactoryBuilder(org.apache.ibatis.session.SqlSessionFactoryBuilder sqlSessionFactoryBuilder) Sets theSqlSessionFactoryBuilderto use when creating theSqlSessionFactory.voidsetTransactionFactory(org.apache.ibatis.transaction.TransactionFactory transactionFactory) Set the MyBatis TransactionFactory to use.voidsetTypeAliases(Class<?>... typeAliases) List of type aliases to register.voidsetTypeAliasesPackage(String typeAliasesPackage) Packages to search for type aliases.voidsetTypeAliasesSuperType(Class<?> typeAliasesSuperType) Super class which domain objects have to extend to have a type alias created.voidsetTypeHandlers(org.apache.ibatis.type.TypeHandler<?>... typeHandlers) Set type handlers.voidsetTypeHandlersPackage(String typeHandlersPackage) Packages to search for type handlers.voidSets the VFS.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.context.ApplicationListener
supportsAsyncExecution
-
Constructor Details
-
SqlSessionFactoryBean
public SqlSessionFactoryBean()
-
-
Method Details
-
setObjectFactory
public void setObjectFactory(org.apache.ibatis.reflection.factory.ObjectFactory objectFactory) Sets the ObjectFactory.- Parameters:
objectFactory- a custom ObjectFactory- Since:
- 1.1.2
-
setObjectWrapperFactory
public void setObjectWrapperFactory(org.apache.ibatis.reflection.wrapper.ObjectWrapperFactory objectWrapperFactory) Sets the ObjectWrapperFactory.- Parameters:
objectWrapperFactory- a specified ObjectWrapperFactory- Since:
- 1.1.2
-
getDatabaseIdProvider
public org.apache.ibatis.mapping.DatabaseIdProvider getDatabaseIdProvider()Gets the DatabaseIdProvider- Returns:
- a specified DatabaseIdProvider
- Since:
- 1.1.0
-
setDatabaseIdProvider
public void setDatabaseIdProvider(org.apache.ibatis.mapping.DatabaseIdProvider databaseIdProvider) Sets the DatabaseIdProvider. As of version 1.2.2 this variable is not initialized by default.- Parameters:
databaseIdProvider- a DatabaseIdProvider- Since:
- 1.1.0
-
getVfs
Gets the VFS.- Returns:
- a specified VFS
-
setVfs
Sets the VFS.- Parameters:
vfs- a VFS
-
getCache
public org.apache.ibatis.cache.Cache getCache()Gets the Cache.- Returns:
- a specified Cache
-
setCache
public void setCache(org.apache.ibatis.cache.Cache cache) Sets the Cache.- Parameters:
cache- a Cache
-
setPlugins
public void setPlugins(org.apache.ibatis.plugin.Interceptor... plugins) Mybatis plugin list.- Parameters:
plugins- list of plugins- Since:
- 1.0.1
-
setTypeAliasesPackage
Packages to search for type aliases.Since 2.0.1, allow to specify a wildcard such as
com.example.*.model.- Parameters:
typeAliasesPackage- package to scan for domain objects- Since:
- 1.0.1
-
setTypeAliasesSuperType
Super class which domain objects have to extend to have a type alias created. No effect if there is no package to scan configured.- Parameters:
typeAliasesSuperType- super class for domain objects- Since:
- 1.1.2
-
setTypeHandlersPackage
Packages to search for type handlers.Since 2.0.1, allow to specify a wildcard such as
com.example.*.typehandler.- Parameters:
typeHandlersPackage- package to scan for type handlers- Since:
- 1.0.1
-
setTypeHandlers
public void setTypeHandlers(org.apache.ibatis.type.TypeHandler<?>... typeHandlers) Set type handlers. They must be annotated withMappedTypesand optionally withMappedJdbcTypes- Parameters:
typeHandlers- Type handler list- Since:
- 1.0.1
-
setDefaultEnumTypeHandler
public void setDefaultEnumTypeHandler(Class<? extends org.apache.ibatis.type.TypeHandler> defaultEnumTypeHandler) Set the default type handler class for enum.- Parameters:
defaultEnumTypeHandler- The default type handler class for enum- Since:
- 2.0.5
-
setTypeAliases
List of type aliases to register. They can be annotated withAlias- Parameters:
typeAliases- Type aliases list- Since:
- 1.0.1
-
setFailFast
public void setFailFast(boolean failFast) If true, a final check is done on Configuration to assure that all mapped statements are fully loaded and there is no one still pending to resolve includes. Defaults to false.- Parameters:
failFast- enable failFast- Since:
- 1.0.1
-
setConfigLocation
public void setConfigLocation(org.springframework.core.io.Resource configLocation) Set the location of the MyBatisSqlSessionFactoryconfig file. A typical value is "WEB-INF/mybatis-configuration.xml".- Parameters:
configLocation- a location the MyBatis config file
-
setConfiguration
public void setConfiguration(org.apache.ibatis.session.Configuration configuration) Set a customized MyBatis configuration.- Parameters:
configuration- MyBatis configuration- Since:
- 1.3.0
-
setMapperLocations
public void setMapperLocations(org.springframework.core.io.Resource... mapperLocations) Set locations of MyBatis mapper files that are going to be merged into theSqlSessionFactoryconfiguration at runtime.This is an alternative to specifying "<sqlmapper>" entries in an MyBatis config file. This property being based on Spring's resource abstraction also allows for specifying resource patterns here: e.g. "classpath*:sqlmap/*-mapper.xml".
- Parameters:
mapperLocations- location of MyBatis mapper files
-
setConfigurationProperties
Set optional properties to be passed into the SqlSession configuration, as alternative to a<properties>tag in the configuration xml file. This will be used to resolve placeholders in the config file.- Parameters:
sqlSessionFactoryProperties- optional properties for the SqlSessionFactory
-
setDataSource
Set the JDBCDataSourcethat this instance should manage transactions for. TheDataSourceshould match the one used by theSqlSessionFactory: for example, you could specify the same JNDI DataSource for both.A transactional JDBC
Connectionfor thisDataSourcewill be provided to application code accessing thisDataSourcedirectly viaDataSourceUtilsorDataSourceTransactionManager.The
DataSourcespecified here should be the targetDataSourceto manage transactions for, not aTransactionAwareDataSourceProxy. Only data access code may work withTransactionAwareDataSourceProxy, while the transaction manager needs to work on the underlying targetDataSource. If there's nevertheless aTransactionAwareDataSourceProxypassed in, it will be unwrapped to extract its targetDataSource.- Parameters:
dataSource- a JDBCDataSource
-
setSqlSessionFactoryBuilder
public void setSqlSessionFactoryBuilder(org.apache.ibatis.session.SqlSessionFactoryBuilder sqlSessionFactoryBuilder) Sets theSqlSessionFactoryBuilderto use when creating theSqlSessionFactory.This is mainly meant for testing so that mock SqlSessionFactory classes can be injected. By default,
SqlSessionFactoryBuildercreatesDefaultSqlSessionFactoryinstances.- Parameters:
sqlSessionFactoryBuilder- a SqlSessionFactoryBuilder
-
setTransactionFactory
public void setTransactionFactory(org.apache.ibatis.transaction.TransactionFactory transactionFactory) Set the MyBatis TransactionFactory to use. Default isSpringManagedTransactionFactory.The default
SpringManagedTransactionFactoryshould be appropriate for all cases: be it Spring transaction management, EJB CMT or plain JTA. If there is no active transaction, SqlSession operations will execute SQL statements non-transactionally.It is strongly recommended to use the default
TransactionFactory. If not used, any attempt at getting an SqlSession through Spring's MyBatis framework will throw an exception if a transaction is active.- Parameters:
transactionFactory- the MyBatis TransactionFactory- See Also:
-
setEnvironment
NOTE: This class overrides anyEnvironmentyou have set in the MyBatis config file. This is used only as a placeholder name. The default value isSqlSessionFactoryBean.class.getSimpleName().- Parameters:
environment- the environment name
-
setScriptingLanguageDrivers
public void setScriptingLanguageDrivers(org.apache.ibatis.scripting.LanguageDriver... scriptingLanguageDrivers) Set scripting language drivers.- Parameters:
scriptingLanguageDrivers- scripting language drivers- Since:
- 2.0.2
-
setDefaultScriptingLanguageDriver
public void setDefaultScriptingLanguageDriver(Class<? extends org.apache.ibatis.scripting.LanguageDriver> defaultScriptingLanguageDriver) Set a default scripting language driver class.- Parameters:
defaultScriptingLanguageDriver- A default scripting language driver class- Since:
- 2.0.2
-
addMapperLocations
public void addMapperLocations(org.springframework.core.io.Resource... mapperLocations) Add locations of MyBatis mapper files that are going to be merged into theSqlSessionFactoryconfiguration at runtime.This is an alternative to specifying "<sqlmapper>" entries in an MyBatis config file. This property being based on Spring's resource abstraction also allows for specifying resource patterns here: e.g. "classpath*:sqlmap/*-mapper.xml".
- Parameters:
mapperLocations- location of MyBatis mapper files- Since:
- 3.0.2
- See Also:
-
addTypeHandlers
public void addTypeHandlers(org.apache.ibatis.type.TypeHandler<?>... typeHandlers) Add type handlers.- Parameters:
typeHandlers- Type handler list- Since:
- 3.0.2
-
addScriptingLanguageDrivers
public void addScriptingLanguageDrivers(org.apache.ibatis.scripting.LanguageDriver... scriptingLanguageDrivers) Add scripting language drivers.- Parameters:
scriptingLanguageDrivers- scripting language drivers- Since:
- 3.0.2
-
addPlugins
public void addPlugins(org.apache.ibatis.plugin.Interceptor... plugins) Add Mybatis plugins.- Parameters:
plugins- list of plugins- Since:
- 3.0.2
-
addTypeAliases
Add type aliases.- Parameters:
typeAliases- Type aliases list- Since:
- 3.0.2
-
afterPropertiesSet
- Specified by:
afterPropertiesSetin interfaceorg.springframework.beans.factory.InitializingBean- Throws:
Exception
-
buildSqlSessionFactory
Build aSqlSessionFactoryinstance.The default implementation uses the standard MyBatis
XMLConfigBuilderAPI to build aSqlSessionFactoryinstance based on a Reader. Since 1.3.0, it can be specified aConfigurationinstance directly(without config file).- Returns:
- SqlSessionFactory
- Throws:
Exception- if configuration is failed
-
getObject
- Specified by:
getObjectin interfaceorg.springframework.beans.factory.FactoryBean<org.apache.ibatis.session.SqlSessionFactory>- Throws:
Exception
-
getObjectType
- Specified by:
getObjectTypein interfaceorg.springframework.beans.factory.FactoryBean<org.apache.ibatis.session.SqlSessionFactory>
-
isSingleton
public boolean isSingleton()- Specified by:
isSingletonin interfaceorg.springframework.beans.factory.FactoryBean<org.apache.ibatis.session.SqlSessionFactory>
-
onApplicationEvent
public void onApplicationEvent(org.springframework.context.event.ContextRefreshedEvent event) - Specified by:
onApplicationEventin interfaceorg.springframework.context.ApplicationListener<org.springframework.context.event.ContextRefreshedEvent>
-