mybatis與spring整合

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

須要的jar包sql

mybatis-3.0.6.jarsession

mybatis-spring-1.0.2.jarmybatis

要點:app

1.在spring中配置mybatis工廠類工具

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

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

spring 中必須的配置。xml

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

Xml代碼 
1     <!-- MyBatis配置 -->  
2         <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
3             <property name="dataSource" ref="c3p0DataSource" />  
4             <property name="configLocation" value="/WEB-INF/config/db/MyBatisConfiguration.xml" />  
5             <property name="mapperLocations" value="/WEB-INF/config/db/*Mapper.xml" />  
6             <property name="typeAliasesPackage" value="${mybatis.alias.basepackage}" />  
7         </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. 配置文件加入新配
    Java代碼 
    1     <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">  
    2       <constructor-arg index="0" ref="sqlSessionFactory" />  
    3       <constructor-arg index="1" value="BATCH" /><!--- 若是想要進行批量操做可加入這個屬性 ->  
    4     </bean>  
    
  2. 注入sqlsession()
    Java代碼
    1     @Reasource //使用spring3的註解注入  
    2     private SqlSession sqlSession; 
  3. 使用sqlsession來進行操做
    Java代碼 
    1     public User getUser(String userId) {  
    2         return (User) sqlSession.selectOne("org.mybatis.spring.sample.mapper.UserMapper.getUser", userId);  
    3       }  
  • SqlSessionDaoSupport(sqlSessionFactory會被spring自動裝配,不須要手動注入)
  1. 繼承SqlSessionDaoSupport類
    Java代碼
    1     public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {  
    2       
    3     }  
  2. 使用getSqlSession()方法取sqlSession來進行數據處理
    Java代碼 
    1     public User getUser(String userId) {  
    2         return (User) getSqlSession().selectOne("org.mybatis.spring.sample.mapper.UserMapper.getUser", userId);  
    3       }   
  • MapperFactoryBean
  1. 寫配置文件,引入每一個DAO接口
    Xml代碼 
    1     <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">  
    2       <property name="mapperInterface" value="org.mybatis.spring.sample.mapper.UserMapper" />  
    3       <property name="sqlSessionFactory" ref="sqlSessionFactory" />  
    4     </bean>   
  2. 在業務層可直接注入dao的接口進行操做
  • MapperScannerConfigurer
  1. 寫配置文件,配置包名將自動引入包中的全部接口
    Xml代碼 
    1     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
    2       <property name="basePackage" value="org.mybatis.spring.sample.mapper" />  
    3     </bean>   
  2. 在業務層可直接注入DAO接口操做,注入時使用的是接口名,其首字母小寫
  3. 注意:若是有別的實現類,其提供的名稱若是是接口名,且首字母小寫,則會在啓動時出現衝突錯誤
相關文章
相關標籤/搜索