少年阿賓

          那些青春的歲月

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks

          本文主要介紹Spring與Mybatis三種常用整合方法,需要的整合架包是mybatis-spring.jar,可通過鏈接
          http://code.google.com/p/mybatis/下載到。

            1、采用數(shù)據(jù)映射器(MapperFactoryBean)的方式,不用寫mybatis映射文件,采用注解方式提供相應(yīng)的sql語句和輸入?yún)?shù)。
            (1)Spring配置文件:

             <!-- 引入jdbc配置文件 -->      

           <context:property-placeholder location="jdbc.properties"/>          

           <!--創(chuàng)建jdbc數(shù)據(jù)源 -->        

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

           <property name="driverClassName" value="${driver}"/>        

            <property name="url" value="${url}"/>         

           <property name="username" value="${username}"/>         

           <property name="password" value="${password}"/>          

          <property name="initialSize" value="${initialSize}"/>          

          <property name="maxActive" value="${maxActive}"/>       

             <property name="maxIdle" value="${maxIdle}"/>          

          <property name="minIdle" value="${minIdle}"/>       

           </bean>        

            <!-- 創(chuàng)建SqlSessionFactory,同時指定數(shù)據(jù)源-->       

           <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">        

           <property name="dataSource" ref="dataSource" />         

          </bean>         

            <!--創(chuàng)建數(shù)據(jù)映射器,數(shù)據(jù)映射器必須為接口-->  

                <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">        

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

            <property name="sqlSessionFactory" ref="sqlSessionFactory" />        

           </bean>         

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

           <property name="userMapper" ref="userMapper"/>  

           </bean>  

           

          數(shù)據(jù)映射器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實現(xiàn)類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的實現(xiàn)類org.mybatis.spring.SqlSessionTemplate。
              mybatis中, sessionFactory可由SqlSessionFactoryBuilder.來創(chuàng)建。
          MyBatis-Spring 中,使用了SqlSessionFactoryBean來替代。
          SqlSessionFactoryBean有一個必須屬性dataSource,
          另外其還有一個通用屬性configLocation(用來指定mybatis的xml配置文件路徑)。
             (1)Spring配置文件:
          <!-- 創(chuàng)建SqlSessionFactory,同時指定數(shù)據(jù)源-->  
          <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">     
           <property name="dataSource" ref="dataSource" />     
           <!-- 指定sqlMapConfig總配置文件,訂制的environment在spring容器中不在生效-->   
           <property  name="configLocation"  value="classpath:sqlMapConfig.xml"/>   
           <!--指定實體類映射文件,可以指定同時指定某一包以及子包下面的所有配置文件,mapperLocations和configLocation有一個即可,當(dāng)需要為實體類指定別名時,可指定configLocation屬性,再在mybatis總配置文件中采用mapper引入實體類映射文件 -->  
            <!- - <property  name="mapperLocations"  value="classpath*:com/xxt/ibatis/dbcp/**/*.xml"/>  -->
           <bean>
            (2)mybatis總配置文件sqlMapConfig.xml:
          <configuration>    
           <typeAliases>     
            <typeAlias type="com.xxt.ibatis.dbcp.domain.User" alias="User" />   
           </typeAliases>     
          <mappers>      
            <mapper resource="com/xxt/ibatis/dbcp/domain/user.map.xml" />      
           </mappers>  
           </configuration> 
          (3)實體類映射文件user.map.xml:
          <mapper namespace="com.xxt.ibatis.dbcp.domain.User">       
           <resultMap type="User" id="userMap">         
            <id property="id" column="id" />        
             <result property="name" column="name" />        
             <result property="password" column="password" />      
               <result property="createTime" column="createtime" />     
             </resultMap>     
             <select id="getUser" parameterType="User" resultMap="userMap">     
               select * from user where id = #{id}        
          </select>  
           <mapper/> 
           (4)dao層接口實現(xiàn)類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代碼
          <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">      
           <property name="dataSource" ref="dataSource" />     
           <property  name="configLocation"  value="classpath:sqlMapConfig.xml"/>     
           <!-- <property  name="mapperLocations"  value="classpath*:com/xxt/ibatis/dbcp/domain/user.map.xml"/   >  -->   
          </bean>    
            <bean id="sqlSession"     class="org.mybatis.spring.SqlSessionTemplate">         
           <constructor-arg index="0" ref="sqlSessionFactory" />   
           </bean>    
           <bean id="userDaoImpl3" class="com.xxt.ibatis.dbcp.dao.impl.UserDaoImpl3">     
           <!--注入SqlSessionTemplate實例 -->      
          <property name="sqlSessionTemplate" ref="sqlSession" />     
            <!--也可直接注入SqlSessionFactory實例,二者都指定時,SqlSessionFactory失效 -->     
           <!-- <property name="sqlSessionFactory" ref="sqlSessionFactory" />    -->  
           </bean>  
           
           (2) dao層接口實現(xiàn)類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);     
            }  
           
          posted on 2012-05-25 13:53 abin 閱讀(58267) 評論(1)  編輯  收藏

          Feedback

          # re: spring與mybatis三種整合方法[未登錄] 2016-06-12 20:19 a
          a  回復(fù)  更多評論
            


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 海阳市| 海宁市| 麻江县| 岳池县| 顺平县| 瑞昌市| 柘城县| 金山区| 安福县| 乐至县| 阿鲁科尔沁旗| 宁德市| 龙海市| 象州县| 珠海市| 二手房| 集安市| 肥东县| 上虞市| 迁西县| 阳城县| 高淳县| 民勤县| 夹江县| 涟源市| 平遥县| 和政县| 华宁县| 临泉县| 南木林县| 江陵县| 赣榆县| 尖扎县| 泗阳县| 江北区| 麦盖提县| 含山县| 龙海市| 武隆县| 思茅市| 姚安县|