public class SqlSessionFactoryBean extends Object implements org.springframework.beans.factory.FactoryBean<org.apache.ibatis.session.SqlSessionFactory>, org.springframework.beans.factory.InitializingBean, org.springframework.context.ApplicationListener<org.springframework.context.ApplicationEvent>
FactoryBean
that creates an 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.setConfigLocation(org.springframework.core.io.Resource)
,
setDataSource(javax.sql.DataSource)
Constructor and Description |
---|
SqlSessionFactoryBean() |
Modifier and Type | Method and Description |
---|---|
void |
afterPropertiesSet() |
protected org.apache.ibatis.session.SqlSessionFactory |
buildSqlSessionFactory()
Build a
SqlSessionFactory instance. |
org.apache.ibatis.cache.Cache |
getCache()
Gets the Cache.
|
org.apache.ibatis.mapping.DatabaseIdProvider |
getDatabaseIdProvider()
Gets the DatabaseIdProvider
|
org.apache.ibatis.session.SqlSessionFactory |
getObject() |
Class<? extends org.apache.ibatis.session.SqlSessionFactory> |
getObjectType() |
Class<? extends org.apache.ibatis.io.VFS> |
getVfs()
Gets the VFS.
|
boolean |
isSingleton() |
void |
onApplicationEvent(org.springframework.context.ApplicationEvent event) |
void |
setCache(org.apache.ibatis.cache.Cache cache)
Sets the Cache.
|
void |
setConfigLocation(org.springframework.core.io.Resource configLocation)
Set the location of the MyBatis
SqlSessionFactory config file. |
void |
setConfiguration(org.apache.ibatis.session.Configuration configuration)
Set a customized MyBatis configuration.
|
void |
setConfigurationProperties(Properties sqlSessionFactoryProperties)
Set optional properties to be passed into the SqlSession configuration, as alternative to a
<properties> tag in the configuration xml file. |
void |
setDatabaseIdProvider(org.apache.ibatis.mapping.DatabaseIdProvider databaseIdProvider)
Sets the DatabaseIdProvider.
|
void |
setDataSource(DataSource dataSource)
Set the JDBC
DataSource that this instance should manage transactions for. |
void |
setEnvironment(String environment)
NOTE: This class overrides any
Environment you have set in the MyBatis
config file. |
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.
|
void |
setMapperLocations(org.springframework.core.io.Resource[] mapperLocations)
Set locations of MyBatis mapper files that are going to be merged into the
SqlSessionFactory
configuration at runtime. |
void |
setObjectFactory(org.apache.ibatis.reflection.factory.ObjectFactory objectFactory)
Sets the ObjectFactory.
|
void |
setObjectWrapperFactory(org.apache.ibatis.reflection.wrapper.ObjectWrapperFactory objectWrapperFactory)
Sets the ObjectWrapperFactory.
|
void |
setPlugins(org.apache.ibatis.plugin.Interceptor[] plugins)
Mybatis plugin list.
|
void |
setSqlSessionFactoryBuilder(org.apache.ibatis.session.SqlSessionFactoryBuilder sqlSessionFactoryBuilder)
Sets the
SqlSessionFactoryBuilder to use when creating the SqlSessionFactory . |
void |
setTransactionFactory(org.apache.ibatis.transaction.TransactionFactory transactionFactory)
Set the MyBatis TransactionFactory to use.
|
void |
setTypeAliases(Class<?>[] typeAliases)
List of type aliases to register.
|
void |
setTypeAliasesPackage(String typeAliasesPackage)
Packages to search for type aliases.
|
void |
setTypeAliasesSuperType(Class<?> typeAliasesSuperType)
Super class which domain objects have to extend to have a type alias created.
|
void |
setTypeHandlers(org.apache.ibatis.type.TypeHandler<?>[] typeHandlers)
Set type handlers.
|
void |
setTypeHandlersPackage(String typeHandlersPackage)
Packages to search for type handlers.
|
void |
setVfs(Class<? extends org.apache.ibatis.io.VFS> vfs)
Sets the VFS.
|
public void setObjectFactory(org.apache.ibatis.reflection.factory.ObjectFactory objectFactory)
objectFactory
- a custom ObjectFactorypublic void setObjectWrapperFactory(org.apache.ibatis.reflection.wrapper.ObjectWrapperFactory objectWrapperFactory)
objectWrapperFactory
- a specified ObjectWrapperFactorypublic org.apache.ibatis.mapping.DatabaseIdProvider getDatabaseIdProvider()
public void setDatabaseIdProvider(org.apache.ibatis.mapping.DatabaseIdProvider databaseIdProvider)
databaseIdProvider
- a DatabaseIdProviderpublic Class<? extends org.apache.ibatis.io.VFS> getVfs()
public void setVfs(Class<? extends org.apache.ibatis.io.VFS> vfs)
vfs
- a VFSpublic org.apache.ibatis.cache.Cache getCache()
public void setCache(org.apache.ibatis.cache.Cache cache)
cache
- a Cachepublic void setPlugins(org.apache.ibatis.plugin.Interceptor[] plugins)
plugins
- list of pluginspublic void setTypeAliasesPackage(String typeAliasesPackage)
typeAliasesPackage
- package to scan for domain objectspublic void setTypeAliasesSuperType(Class<?> typeAliasesSuperType)
typeAliasesSuperType
- super class for domain objectspublic void setTypeHandlersPackage(String typeHandlersPackage)
typeHandlersPackage
- package to scan for type handlerspublic void setTypeHandlers(org.apache.ibatis.type.TypeHandler<?>[] typeHandlers)
MappedTypes
and optionally with MappedJdbcTypes
typeHandlers
- Type handler listpublic void setTypeAliases(Class<?>[] typeAliases)
Alias
typeAliases
- Type aliases listpublic void setFailFast(boolean failFast)
failFast
- enable failFastpublic void setConfigLocation(org.springframework.core.io.Resource configLocation)
SqlSessionFactory
config file. A typical value is
"WEB-INF/mybatis-configuration.xml".configLocation
- a location the MyBatis config filepublic void setConfiguration(org.apache.ibatis.session.Configuration configuration)
configuration
- MyBatis configurationpublic void setMapperLocations(org.springframework.core.io.Resource[] mapperLocations)
SqlSessionFactory
configuration 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".mapperLocations
- location of MyBatis mapper filespublic void setConfigurationProperties(Properties sqlSessionFactoryProperties)
<properties>
tag in the configuration xml file. This will be used to
resolve placeholders in the config file.sqlSessionFactoryProperties
- optional properties for the SqlSessionFactorypublic void setDataSource(DataSource dataSource)
DataSource
that this instance should manage transactions for. The DataSource
should match the one used by the SqlSessionFactory
: for example, you could specify the same
JNDI DataSource for both.
A transactional JDBC Connection
for this DataSource
will be provided to application code
accessing this DataSource
directly via DataSourceUtils
or DataSourceTransactionManager
.
The DataSource
specified here should be the target DataSource
to manage transactions for, not
a TransactionAwareDataSourceProxy
. Only data access code may work with
TransactionAwareDataSourceProxy
, while the transaction manager needs to work on the
underlying target DataSource
. If there's nevertheless a TransactionAwareDataSourceProxy
passed in, it will be unwrapped to extract its target DataSource
.dataSource
- a JDBC DataSource
public void setSqlSessionFactoryBuilder(org.apache.ibatis.session.SqlSessionFactoryBuilder sqlSessionFactoryBuilder)
SqlSessionFactoryBuilder
to use when creating the SqlSessionFactory
.
This is mainly meant for testing so that mock SqlSessionFactory classes can be injected. By
default, SqlSessionFactoryBuilder
creates DefaultSqlSessionFactory
instances.sqlSessionFactoryBuilder
- a SqlSessionFactoryBuilderpublic void setTransactionFactory(org.apache.ibatis.transaction.TransactionFactory transactionFactory)
SpringManagedTransactionFactory
The default SpringManagedTransactionFactory
should 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.transactionFactory
- the MyBatis TransactionFactorySpringManagedTransactionFactory
public void setEnvironment(String environment)
Environment
you have set in the MyBatis
config file. This is used only as a placeholder name. The default value is
SqlSessionFactoryBean.class.getSimpleName()
.environment
- the environment namepublic void afterPropertiesSet() throws Exception
afterPropertiesSet
in interface org.springframework.beans.factory.InitializingBean
Exception
protected org.apache.ibatis.session.SqlSessionFactory buildSqlSessionFactory() throws IOException
SqlSessionFactory
instance.
The default implementation uses the standard MyBatis XMLConfigBuilder
API to build a
SqlSessionFactory
instance based on an Reader.
Since 1.3.0, it can be specified a Configuration
instance directly(without config file).IOException
- if loading the config file failedpublic org.apache.ibatis.session.SqlSessionFactory getObject() throws Exception
getObject
in interface org.springframework.beans.factory.FactoryBean<org.apache.ibatis.session.SqlSessionFactory>
Exception
public Class<? extends org.apache.ibatis.session.SqlSessionFactory> getObjectType()
getObjectType
in interface org.springframework.beans.factory.FactoryBean<org.apache.ibatis.session.SqlSessionFactory>
public boolean isSingleton()
isSingleton
in interface org.springframework.beans.factory.FactoryBean<org.apache.ibatis.session.SqlSessionFactory>
public void onApplicationEvent(org.springframework.context.ApplicationEvent event)
onApplicationEvent
in interface org.springframework.context.ApplicationListener<org.springframework.context.ApplicationEvent>
Copyright © 2010–2019 MyBatis.org. All rights reserved.