spring与mybatis三种整合方法

本文主要介绍Spring与Mybatis三种常用整合方法,需要的整合架包是mybatis-spring.jar,可通过链接

http://code.google.com/p/mybatis/下载到。

  1、采用数据映射器(MapperFactoryBean)的方式,不用写mybatis映射文件,采用注解方式提供相应的sql语句和输入参数。


  (1)Spring配置文件:

         

 "jdbc.properties"/>          

         

"dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">         

 "driverClassName" value="${driver}"/>        

  "url" value="${url}"/>         

 "username" value="${username}"/>         

 "password" value="${password}"/>          

"initialSize" value="${initialSize}"/>          

"maxActive" value="${maxActive}"/>       

   "maxIdle" value="${maxIdle}"/>          

"minIdle" value="${minIdle}"/>       

         

         

 "sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">        

 "dataSource" ref="dataSource" />         

         

    

      "userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">        

 "mapperInterface" value="com.xxt.ibatis.dbcp.dao.UserMapper" />       

  "sqlSessionFactory" ref="sqlSessionFactory" />        

          

 "userDaoImpl2" class="com.xxt.ibatis.dbcp.dao.impl.UserDaoImpl2">       

 "userMapper" ref="userMapper"/>  

   

 

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

public interface UserMapper {     
     @Select( "SELECT * FROM user WHERE id = #{userId}")        
  User getUser( @Param( "userId"long id);   
 }  
 
 
dao接口类UserDao,代码如下:
Java代码
public interface UserDao {   
     public User getUserById(User user);  
 }  
 
dao实现类UserDaoImpl2,,代码如下:
Java代码
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配置文件:
  
id= "sqlSessionFactory"  class= "org.mybatis.spring.SqlSessionFactoryBean" >     
    name= "dataSource"  ref= "dataSource"  />     
     
     name= "configLocation"   value= "classpath:sqlMapConfig.xml" />   
    
     name= "mapperLocations"   value= "classpath*:com/xxt/ibatis/dbcp/**/*.xml" />  -- >
 >
  (2)mybatis总配置文件sqlMapConfig.xml:
    
       
     type= "com.xxt.ibatis.dbcp.domain.User"  alias= "User"  />   
       
      
     resource= "com/xxt/ibatis/dbcp/domain/user.map.xml"  />      
    
   
(3)实体类映射文件user.map.xml:
"com.xxt.ibatis.dbcp.domain.User">       
 "User" id= "userMap">         
  "id" column= "id" />        
   "name" column= "name" />        
   "password" column= "password" />      
     "createTime" column= "createtime" />     
        
   "getUser" parameterType= "User" resultMap= "userMap">     
     select * from user where id = #{id}        
  
  
 (4)dao层接口实现类UserDaoImpl:
Java代码
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代码
"sqlSessionFactory"  class= "org.mybatis.spring.SqlSessionFactoryBean">      
 "dataSource" ref= "dataSource" />     
 "configLocation"  value= "classpath:sqlMapConfig.xml"/>     
    
    
  "sqlSession"      class= "org.mybatis.spring.SqlSessionTemplate">         
 "0" ref= "sqlSessionFactory" />   
     
 "userDaoImpl3"  class= "com.xxt.ibatis.dbcp.dao.impl.UserDaoImpl3">     
       
"sqlSessionTemplate" ref= "sqlSession" />     
       
   
   
 
 (2) dao层接口实现类UserDaoImpl3:
   
Java代码
public class UserDaoImpl3  extends SqlSessionDaoSupport  implements UserDao {  
    public User getUserById(User user) {     
    return (User) getSqlSession().selectOne( "com.xxt.ibatis.dbcp.domain.User.getUser", user);     
  }

你可能感兴趣的:(JAVA,JAVA,spring,mybatis,ibatis,sql)