spring与mybatis三种整合方法

 本文主要介绍Spring与Mybatis三种常用整合方法,需要的整合架包是mybatis-spring.jar,可通过链接
http://code.google.com/p/mybatis/下载到。

  1、采用数据映射器(MapperFactoryBean)的方式,不用写mybatis映射文件,采用注解方式提供相应的sql语句和输入参数。
  (1)Spring配置文件:
Java代码
  1.        
  2.     "jdbc.properties"/>    
  3.   
  4.         
  5.      "dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">   
  6.        "driverClassName" value="${driver}"/>   
  7.        "url" value="${url}"/>   
  8.        "username" value="${username}"/>   
  9.        "password" value="${password}"/>   
  10.        "initialSize" value="${initialSize}"/>   
  11.        "maxActive" value="${maxActive}"/>   
  12.        "maxIdle" value="${maxIdle}"/>   
  13.        "minIdle" value="${minIdle}"/>   
  14.         
  15.   
  16.         
  17.      "sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">    
  18.      "dataSource" ref="dataSource" />    
  19.          
  20.   
  21.         
  22.      "userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">    
  23.      "mapperInterface" value="com.xxt.ibatis.dbcp.dao.UserMapper" />    
  24.      "sqlSessionFactory" ref="sqlSessionFactory" />    
  25.         
  26.   
  27.      "userDaoImpl2" class="com.xxt.ibatis.dbcp.dao.impl.UserDaoImpl2">   
  28.      "userMapper" ref="userMapper"/>   
  29.   
     
      

      
      
        
        
        
        
        
        
        
        
      

      
       
       
       

      
       
       
       
      

      
      
 

 
  (2)数据映射器UserMapper,代码如下:

Java代码
  1. public interface UserMapper {   
  2.       @Select("SELECT * FROM user WHERE id = #{userId}")    
  3.       User getUser(@Param("userId"long id);    
  4. }  
  public interface UserMapper {
        @Select("SELECT * FROM user WHERE id = #{userId}") 
        User getUser(@Param("userId") long id); 
  }

 
    (3) dao接口类UserDao,代码如下:

Java代码
  1. public interface UserDao {   
  2.     public User getUserById(User user);   
  3. }  
   public interface UserDao {
       public User getUserById(User user);
   }

 
   (4)dao实现类UserDaoImpl2,,代码如下:

Java代码
  1. public class UserDaoImpl2 implements UserDao {   
  2.      private UserMapper userMapper;    
  3.   
  4.      public void setUserMapper(UserMapper userMapper) {    
  5.          this.userMapper = userMapper;    
  6.      }     
  7.   
  8.      public User getUserById(User user) {   
  9.         return userMapper.getUser(user.getId());    
  10.      }   
  11.  }  
  public class UserDaoImpl2 implements UserDao {
       private UserMapper userMapper; 

       public void setUserMapper(UserMapper userMapper) { 
           this.userMapper = userMapper; 
       }  

       public User getUserById(User user) {
          return userMapper.getUser(user.getId()); 
       }
   }

 
  2、采用接口org.apache.ibatis.session.SqlSession的实现类org.mybatis.spring.SqlSessionTemplate。
    mybatis中, sessionFactory可由SqlSessionFactoryBuilder.来创建。MyBatis-Spring 中,使用了SqlSessionFactoryBean来替代。SqlSessionFactoryBean有一个必须属性dataSource,另外其还有一个通用属性configLocation(用来指定mybatis的xml配置文件路径)。
   (1)Spring配置文件:

Xml代码
  1.   
  2. lt;bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">    
  3.   <property name="dataSource" ref="dataSource" />    
  4.     
  5.   <property  name="configLocation"  value="classpath:sqlMapConfig.xml"/>  
  6.     
  7.   <property  name="mapperLocations"  value="classpath*:com/xxt/ibatis/dbcp/**/*.xml"/>  -->  
  8. lt;/bean>   

 
    (2)mybatis总配置文件sqlMapConfig.xml:

Xml代码
  1. <configuration>  
  2.    <typeAliases>  
  3.      <typeAlias type="com.xxt.ibatis.dbcp.domain.User" alias="User" />  
  4.   typeAliases>  
  5.    <mappers>  
  6.       <mapper resource="com/xxt/ibatis/dbcp/domain/user.map.xml" />  
  7.      mappers>  
  8.  configuration>  

 
    (3)实体类映射文件user.map.xml:

Java代码
  1. "com.xxt.ibatis.dbcp.domain.User">   
  2.      "User" id="userMap">   
  3.         "id" column="id" />   
  4.         "name" column="name" />   
  5.         "password" column="password" />   
  6.         "createTime" column="createtime" />   
  7.         
  8.      "getUser" parameterType="User" resultMap="userMap">   
  9.        select * from user where id = #{id}   
  10.         
  11.   

     
        
        
        
        
     
     

 
    (4)dao层接口实现类UserDaoImpl:

Java代码
  1. public class UserDaoImpl implements  UserDao  {   
  2.    public SqlSessionTemplate sqlSession;   
  3.    public User getUserById(User user) {   
  4.        return (User)sqlSession.selectOne("com.xxt.ibatis.dbcp.domain.User.getUser", user);   
  5.    }   
  6.    public void setSqlSession(SqlSessionTemplate sqlSession) {   
  7.         this.sqlSession = sqlSession;   
  8.    }   
  9.  }  
  public class UserDaoImpl implements  UserDao  {
     public SqlSessionTemplate sqlSession;
     public User getUserById(User user) {
         return (User)sqlSession.selectOne("com.xxt.ibatis.dbcp.domain.User.getUser", user);
     }
     public void setSqlSession(SqlSessionTemplate sqlSession) {
          this.sqlSession = sqlSession;
     }
   }

 
 3、采用抽象类org.mybatis.spring.support.SqlSessionDaoSupport提供SqlSession。
   (1)spring配置文件:

Java代码
  1. "sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">    
  2.    "dataSource" ref="dataSource" />   
  3.    "configLocation"  value="classpath:sqlMapConfig.xml"/>   
  4.       
  5.   
  6.   
  7.  "sqlSession"     class="org.mybatis.spring.SqlSessionTemplate">    
  8.       "0" ref="sqlSessionFactory" />    
  9.   
  10.   
  11. "userDaoImpl3" class="com.xxt.ibatis.dbcp.dao.impl.UserDaoImpl3">   
  12.       
  13.    "sqlSessionTemplate" ref="sqlSession" />    
  14.       
  15.       
  16.   
 
   
   
   


  
       



   
    
   
   

 
   (2) dao层接口实现类UserDaoImpl3:
   

Java代码
  1. public class UserDaoImpl3 extends SqlSessionDaoSupport implements UserDao {   
  2.   public User getUserById(User user) {   
  3.      return (User) getSqlSession().selectOne("com.xxt.ibatis.dbcp.domain.User.getUser", user);   
  4.   }   
  5. }  

你可能感兴趣的:(JAVA开发,iBatis3学习笔记,spring)