1个回答
展开全部
原因如下:
在mybatis中,SqlSessionFactory由SqlSessionFactoryBuilder创建.
在mybatis-spring中,是由SqlSessionFactoryBean创建的.
1.创建
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" /></bean>
注意SqlSessionFactoryBean实现了Spring的FactoryBean接口,这意味着Spring最终创建的bean不是SqlSessionFactoryBean自身,而是SqlSessionFactoryBean的getObject()方法的返回结果。在这种情况下,Spring会在程序启动时为你创建一个SqlSessionFactory,并且将其以sqlSessionFactory 的名称存储.
等价的Java代码如下:
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
SqlSessionFactory sessionFactory = factoryBean.getObject();
通常在mybatis-spring的使用中,不需要直接使用SqlSessionFactoryBean或者对应的SqlSessionFactory.
Session factory会被注入到MapperFactoryBean或者其他继承SqlSessionDaoSupport的DAO.
在mybatis中,SqlSessionFactory由SqlSessionFactoryBuilder创建.
在mybatis-spring中,是由SqlSessionFactoryBean创建的.
1.创建
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" /></bean>
注意SqlSessionFactoryBean实现了Spring的FactoryBean接口,这意味着Spring最终创建的bean不是SqlSessionFactoryBean自身,而是SqlSessionFactoryBean的getObject()方法的返回结果。在这种情况下,Spring会在程序启动时为你创建一个SqlSessionFactory,并且将其以sqlSessionFactory 的名称存储.
等价的Java代码如下:
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
SqlSessionFactory sessionFactory = factoryBean.getObject();
通常在mybatis-spring的使用中,不需要直接使用SqlSessionFactoryBean或者对应的SqlSessionFactory.
Session factory会被注入到MapperFactoryBean或者其他继承SqlSessionDaoSupport的DAO.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询