mybatis與spring3.1整合

因spring3發佈時mybatis還沒有出正式版本,所以spring沒有整合最新的mybatis.不過社區倒是開發了一箇中間件。

 

需要的jar包

mybatis-3.0.6.jar

mybatis-spring-1.0.2.jar

 

要點:

1.在spring中配置mybatis工廠類

2.在dao層使用spring注入的的工具bean對數據進行操作

整合時,可以有四種方式來使用mybatis進行數據處理。

 

spring中必須的配置。

spring的配置文件中加入以下內容

    <!-- MyBatis配置 -->  
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
            <property name="dataSource" ref="c3p0DataSource" />  
            <property name="configLocation" value="/WEB-INF/config/db/MyBatisConfiguration.xml" />  
            <property name="mapperLocations" value="/WEB-INF/config/db/*Mapper.xml" />  
            <property name="typeAliasesPackage" value="${mybatis.alias.basepackage}" />  
        </bean>  

 

1.SqlSessionFactoryBean (必需)

   就是中間件所需的處理類

 

2.dataSource  (必需)

   spring中數據源引用

 

3.configLocation  (可選)

   Mybatis自身的配置文件,一般用來聲明別名

 

4.mapperLocation  (可選)

   mybatis的映射文件

 

5.typeAliasesPackage (可選)

   要映射類的包路徑,如果使用了這種方式,則configLocation中不必再進行聲明

 

 

 

使用mybatis進行數據處理的四種方式(SqlSessionTemplate/SqlSessionDaoSupport/MapperFactoryBean/MapperScannerConfigurer)

不同方式的特點

  1. SqlSessionTemplate  這個需要寫配置文件,在實現類中注入sqlsession,再使用sqlsession,是細顆粒控制
  2. SqlSessionDaoSupport   這個只需要在實現類中繼承特殊類就可以使用sqlsession
  3. MapperFactoryBean  這個要寫配置文件,把對應的所有接口在配置文件中引用即可,無需寫實現類
  4. MapperScannerConfigurer  這個要寫配置文件,只要給出接口所在的包即可,會自動把包中的接口引入,無需寫實現類
  • SqlSessionTemplate
  1. 配置文件加入新配
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">  
      <constructor-arg index="0" ref="sqlSessionFactory" />  
      <constructor-arg index="1" value="BATCH" /><!--- 如果想要進行批量操作可加入這個屬性 ->  
    </bean>


     
  2. 注入sqlsession()
        @Reasource //使用spring3的註解注入  
        private SqlSession sqlSession;  

     
  3. 使用sqlsession來進行操作
        public User getUser(String userId) {  
            return (User) sqlSession.selectOne("org.mybatis.spring.sample.mapper.UserMapper.getUser", userId);  
          }  


  • SqlSessionDaoSupport(sqlSessionFactory會被spring自動裝配,不需要手動注入)
  1. 繼承SqlSessionDaoSupport類
        public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {  
          
        }  

     
  2. 使用getSqlSession()方法取sqlSession來進行數據處理
        public User getUser(String userId) {  
            return (User) getSqlSession().selectOne("org.mybatis.spring.sample.mapper.UserMapper.getUser", userId);  
          }  

     
  • MapperFactoryBean
  1. 寫配置文件,引入每個DAO接口
        <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">  
          <property name="mapperInterface" value="org.mybatis.spring.sample.mapper.UserMapper" />  
          <property name="sqlSessionFactory" ref="sqlSessionFactory" />  
        </bean>  

     
  2. 在業務層可直接注入dao的接口進行操作
  • MapperScannerConfigurer
  1. 寫配置文件,配置包名將自動引入包中的所有接口
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
          <property name="basePackage" value="org.mybatis.spring.sample.mapper" />  
        </bean>  

     
  2. 在業務層可直接注入DAO接口操作,注入時使用的是接口名,其首字母小寫
  3. 注意:如果有別的實現類,其提供的名稱如果是接口名,且首字母小寫,則會在啓動時出現衝突錯誤
分享到:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章