`
xueyue521q
  • 浏览: 5938 次
社区版块
存档分类
最新评论

spring与mybatis整合方法

 
阅读更多

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

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

[java] view plain copy
    1.        <!-- 引入jdbc配置文件 --> 
    2.        <context:property-placeholder location="jdbc.properties" />  
    3.     
    4.         <!--创建jdbc数据源 --> 
    5.         <bean id="dataSource"   class = "org.apache.commons.dbcp.BasicDataSource"  destroy-method= "close" > 
    6.           <property name="driverClassName"  value= "${driver}" /> 
    7.           <property name="url"  value= "${url}" /> 
    8.           <property name="username"  value= "${username}" /> 
    9.           <property name="password"  value= "${password}" /> 
    10.           <property name="initialSize"  value= "${initialSize}" /> 
    11.           <property name="maxActive"  value= "${maxActive}" /> 
    12.           <property name="maxIdle"  value= "${maxIdle}" /> 
    13.           <property name="minIdle"  value= "${minIdle}" /> 
    14.         </bean> 
    15.     
    16.         <!-- 创建SqlSessionFactory,同时指定数据源--> 
    17.         <bean id="sqlSessionFactory"   class = "org.mybatis.spring.SqlSessionFactoryBean" >  
    18.         <property name="dataSource"  ref= "dataSource"  />  
    19.         </bean>  
    20.     
    21.         <!--创建数据映射器,数据映射器必须为接口--> 
    22.         <bean id="userMapper"   class = "org.mybatis.spring.mapper.MapperFactoryBean" >  
    23.         <property name="mapperInterface"  value= "com.xxt.ibatis.dbcp.dao.UserMapper"  />  
    24.         <property name="sqlSessionFactory"  ref= "sqlSessionFactory"  />  
    25.         </bean> 
    26.     
    27.         <bean id="userDaoImpl2"   class = "com.xxt.ibatis.dbcp.dao.impl.UserDaoImpl2" > 
    28.         <property name="userMapper"  ref= "userMapper" /> 
    29.    </bean> 
 
  (2)数据映射器UserMapper,代码如下:

[java] view plain copy
    1.    public   interface  UserMapper { 
    2.          @Select ( "SELECT * FROM user WHERE id = #{userId}" )  
    3.          User getUser(@Param ( "userId" )  long  id);  
    4.    } 
 
    (3) dao接口类UserDao,代码如下:

[java] view plain copy
    1.    public   interface  UserDao { 
    2.        public  User getUserById(User user); 
    3.    } 
 
   (4)dao实现类UserDaoImpl2,,代码如下:

[java] view plain copy
    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.     } 
 

  2、采用接口org.apache.ibatis.session.SqlSession的实现类org.mybatis.spring.SqlSessionTemplate。
    mybatis中, sessionFactory可由SqlSessionFactoryBuilder.来创建。MyBatis- Spring 中,使用了SqlSessionFactoryBean来替代。SqlSessionFactoryBean有一个必须属性 dataSource,另外其还有一个通用属性configLocation(用来指定mybatis的xml配置文件路径)。
   (1)Spring配置文件:
  
[java] view plain copy
    1.    <bean id= "sqlSessionFactory"   class = "org.mybatis.spring.SqlSessionFactoryBean" >  
    2.       <property name="dataSource"  ref= "dataSource"  /> 
    3.       <property  name="configLocation"   value= "classpath:sqlMapConfig.xml" /> 
    4.       <!-- <property  name="mapperLocations"   value= "classpath*:com/xxt/ibatis/dbcp/domain/user.map.xml" /   >  --> 
    5.    </bean> 
    6.     
    7.     <bean id="sqlSession"       class = "org.mybatis.spring.SqlSessionTemplate" >  
    8.          <constructor-arg index="0"  ref= "sqlSessionFactory"  />  
    9.    </bean> 
    10.     
    11.    <bean id="userDaoImpl3"   class = "com.xxt.ibatis.dbcp.dao.impl.UserDaoImpl3" > 
    12.       <!--注入SqlSessionTemplate实例 --> 
    13.       <property name="sqlSessionTemplate"  ref= "sqlSession"  />  
    14.       <!--也可直接注入SqlSessionFactory实例,二者都指定时,SqlSessionFactory失效 --> 
    15.       <!-- <property name="sqlSessionFactory"  ref= "sqlSessionFactory"  />  
    16.    --> 
    17.    </bean> 
 
    (2)mybatis总配置文件sqlMapConfig.xml:

[xml] view plain copy
    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] view plain copy
    1.    <mapper namespace= "com.xxt.ibatis.dbcp.domain.User" > 
    2.         <resultMap type="User"  id= "userMap" > 
    3.            <id property="id"  column= "id"  /> 
    4.            <result property="name"  column= "name"  /> 
    5.            <result property="password"  column= "password"  /> 
    6.            <result property="createTime"  column= "createtime"  /> 
    7.         </resultMap> 
    8.         <select id="getUser"  parameterType= "User"  resultMap= "userMap" > 
    9.           select * from user where id = #{id} 
    10.         </select> 
    11.    <mapper/> 
 
    (4)dao层接口实现类UserDaoImpl:

[java] view plain copy
    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.     }

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics