springmvc - SqlSessionFactoryBean

1、SqlSessionFactoryBean

mybatis-spring 官網html

在基本的 MyBatis 中,session 工廠可使用 SqlSessionFactoryBuilder 來建立。而在 MyBatis-Spring 中,則使用 SqlSessionFactoryBean 來替代:spring

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="dataSource" ref="dataSource" />
</bean>

注意:sql

實際上在Spring中,SqlSessionFactoryBean 並非真正的session工廠,這其中經歷了apache

SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
SqlSessionFactory sessionFactory = factoryBean.getObject();

這樣的py交易。最後產生的sessionFactory 對象將以SqlSessionFactory爲名存儲。session

至於,在通常的 MyBatis-Spring用法中,session工廠將會被注入到 MapperFactoryBean或其它擴展了SqlSessionDaoSupport DAO中。mybatis

2、屬性

  • 必須屬性
    SqlSessionFactory 有一個單獨的必須屬性,就是 JDBC 的 DataSource
  • 通用屬性
    configLocation,它是用來指定 MyBatis 的 XML 配置文件路徑的。Mybatis 配置文件中一般刨包括 <settings> 或<typeAliases>的部分。
  • 建議屬性
    當MyBatis 映射器 XML 文件在和映射器類不在同一路徑下,有兩種解決方法。第一是手動在 MyBatis 的 XML 配 置文件中使用<mappers>部分來指定類路徑。第二是使用工廠 bean 的 mapperLocations 屬 性。
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="configLocation" value="classpath:mybatis/sqlMapConfig.xml"/>
    <!-- 自動掃描mapper.xml文件 -->
    <!-- 不要使用第一種方式,這是錯誤的。-->
    <!--<property name="mapperLocations" value="classpath*:club.lemos.ssm.mapper/*.xml"></property>-->
    <property name="mapperLocations" value="classpath*:club/lemos/ssm/mapper/*.xml"></property>
</bean>

mapperLocations 的值能夠包含 Ant 樣式來加載一個目錄中全部文件, 或者從基路徑下 遞歸搜索全部路徑。app

  • 其它屬性
    • 在容器環境管理事務中,一個可能須要的屬性是 transactionFactoryClass
    • 從1.3.0版本, 增長了configuration 屬性.它可以在沒有mybatisConfig.xml文件的狀況下,對其屬性進行配置。
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="dataSource" ref="dataSource" />
  <property name="configuration">
    <bean class="org.apache.ibatis.session.Configuration">
      <property name="mapUnderscoreToCamelCase" value="true"/>
    </bean>
  </property>
</bean>

 

注意:ui

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="mapperLocations" value="classpath*:com/taotao/mapping/*.xml"/>
    <property name="configLocation" value="classpath:mybatis/sqlMapConfig.xml"/>
</bean>

這個地方必定要加classpath:雖然不加可能也能訪問到。可是對於某些開發狀況下仍是會報錯。不要使用classpath*,spa

由於classpath* 是在不一樣jar包中查找多個文件。好比*.xml。code

相關文章
相關標籤/搜索