<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    瘋狂

    STANDING ON THE SHOULDERS OF GIANTS
    posts - 481, comments - 486, trackbacks - 0, articles - 1
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
     

    Spring通過(guò)DAO模式,提供了對(duì)iBATIS的良好支持。SqlMapClient對(duì)象是iBATIS中的主要對(duì)象,我們可以通過(guò)配置讓spring來(lái)管理SqlMapClient對(duì)象的創(chuàng)建。

    hibernate類似,Spring 提供了SqlMapClientDaoSupport對(duì)象,我們的DAO可以繼承這個(gè)類,通過(guò)它所提供的SqlMapClientTemplate對(duì)象來(lái)操縱數(shù)據(jù)庫(kù)。看起來(lái)這些概念都與hibernate類似。

    通過(guò)SqlMapClientTemplate來(lái)操縱數(shù)據(jù)庫(kù)的CRUD是沒(méi)有問(wèn)題的,這里面關(guān)鍵的問(wèn)題是事務(wù)處理。Spring提供了強(qiáng)大的聲明式事務(wù)處理的功能,我們已經(jīng)清楚hibernate中如何配置聲明式的事務(wù),那么在iBATIS中如何獲得聲明式事務(wù)的能力呢?

    第一,我們需要了解的是spring通過(guò)AOP來(lái)攔截方法的調(diào)用,從而在這些方法上面添加聲明式事務(wù)處理的能力。典型配置如下:applicationContext-common.xml

        <!-- 配置事務(wù)特性 -->

        <tx:advice id="txAdvice" transaction-manager="事務(wù)管理器名稱">

            <tx:attributes>

               <tx:method name="add*" propagation="REQUIRED"/>

               <tx:method name="del*" propagation="REQUIRED"/>

               <tx:method name="update*" propagation="REQUIRED"/>

               <tx:method name="*" read-only="true"/>

           </tx:attributes>

        </tx:advice>

       

        <!-- 配置哪些類的方法需要進(jìn)行事務(wù)管理 -->

        <aop:config>

           <aop:pointcut id="allManagerMethod" expression="execution(* com.ibatis.manager.*.*(..))"/>

           <aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod"/>

        </aop:config>

    這些事務(wù)都是聲明在業(yè)務(wù)邏輯層的對(duì)象上的。

    第二,我們需要一個(gè)事務(wù)管理器,對(duì)事務(wù)進(jìn)行管理。

        <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

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

        </bean>

        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">

            <property name="driverClassName" value="com.mysql.jdbc.Driver"/>

            <property name="url" value="jdbc:mysql://127.0.0.1/ibatis"/>

            <property name="username" value="root"/>

            <property name="password" value="mysql"/>

        </bean>

    此后,我們需要讓spring來(lái)管理SqlMapClient對(duì)象:

        <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">

           <property name="configLocation"><value>classpath:sqlMapConfig.xml</value></property>

        </bean>

    我們的sqlMapConfig.xml就可以簡(jiǎn)寫(xiě)為:

    <?xml version="1.0" encoding="UTF-8" ?>

    <!DOCTYPE sqlMapConfig     

        PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"     

        "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">

    <sqlMapConfig>

        <settings

           lazyLoadingEnabled="true"

            useStatementNamespaces="true" />

        <!-- 使用spring之后,數(shù)據(jù)源的配置移植到了spring上,所以iBATIS本身的配置可以取消 -->

      <sqlMap resource="com/ibatis/dao/impl/ibatis/User.xml"/>

    </sqlMapConfig>

    User.xml:如下

    <?xml version="1.0" encoding="UTF-8" ?>

    <!DOCTYPE sqlMap     

        PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"     

        "http://ibatis.apache.org/dtd/sql-map-2.dtd">

    <sqlMap namespace="User">

     <!-- Use type aliases to avoid typing the full classname every time. -->

     <typeAlias alias="User" type="com.ibatis.User"/>

     <!-- Select with no parameters using the result map for Account class. -->

     <select id="selectAllUsers" resultClass="User">

        select * from t_user

     </select>

     

     <select id="selectUser" resultClass="User" parameterClass="int">

      select * from t_user where id=#id#

     </select>

     

     <insert id="insertUser" parameterClass="User">

      insert into t_user values (

           null,#username#,#password#

      )

     </insert>

     

     <update id="updateUser" parameterClass="User">

      update t_user set username = #username#,password=#password#

      where id=#id#

      </update>

     

     <delete id="deleteUser" parameterClass="int">

      delete from t_user where id=#id#

     </delete>

    </sqlMap>

    我們的DAO的編寫(xiě):

    package com.iabtis.dao.impl.ibatis;

    import java.util.List;

    import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;

    import com.ibatis.dao.UserDAO;

    import com.ibatis.crm.model.User;

    public class UserDAOImpl extends SqlMapClientDaoSupport implements UserDAO {

        public void select(User user) {

                  getSqlMapClientTemplate().delete("selectUser ",user.getId());

           }

       public List findAll() {

                  return getSqlMapClientTemplate().queryForList("selectAllUsers ");

           }

           public void delete(User user) {

                  getSqlMapClientTemplate().delete("deleteUser ",user.getId());

           }

           public void save(User user) {

                  getSqlMapClientTemplate().insert("insertUser ",user);

           }

           public void update(User user) {

                  getSqlMapClientTemplate().update("updateUser ",user);

           }

    }

    繼承SqlMapClientDaoSupport,要求我們注入SqlMapClient對(duì)象,因此,需要有如下的DAO配置:

    <bean id="userDAO" class="com.ibatils.dao.impl.ibatis.UserDAOImpl">

         <property name=”sqlMapClient” ref=”sqlMapClient”/>

    </bean>

    這就是所有需要注意的問(wèn)題了,此后就可以在業(yè)務(wù)邏輯層調(diào)用DAO對(duì)象了!


    評(píng)論

    # re: ibatis學(xué)習(xí)(三)---ibatis與spring的整合  回復(fù)  更多評(píng)論   

    2007-12-08 09:42 by laocat
    豁然開(kāi)朗 !!

    # re: ibatis學(xué)習(xí)(三)---ibatis與spring的整合  回復(fù)  更多評(píng)論   

    2008-03-24 16:08 by 屹礫
    整合的問(wèn)題現(xiàn)在終于清楚了,
    對(duì)于advice和aop還有點(diǎn)不清楚。

    # re: ibatis學(xué)習(xí)(三)---ibatis與spring的整合[未登錄](méi)  回復(fù)  更多評(píng)論   

    2008-06-13 17:26 by 冷漠大神
    真是不錯(cuò)的文章啊 如果在在可以把源碼提供下載 那就更完美了 :-) 呵呵 是不是有點(diǎn)貪心

    # re: ibatis學(xué)習(xí)(三)---ibatis與spring的整合[未登錄](méi)  回復(fù)  更多評(píng)論   

    2008-06-13 17:34 by 冷漠大神
    有沒(méi)有代碼下載啊?

    # re: ibatis學(xué)習(xí)(三)---ibatis與spring的整合  回復(fù)  更多評(píng)論   

    2008-08-25 11:35 by 379548695qq
    UserDAO類里面的內(nèi)容是什么?

    # re: ibatis學(xué)習(xí)(三)---ibatis與spring的整合[未登錄](méi)  回復(fù)  更多評(píng)論   

    2009-03-19 10:17 by 蟲(chóng)子
    正在煩惱中,google到了你的方案!呵呵

    # re: ibatis學(xué)習(xí)(三)---ibatis與spring的整合  回復(fù)  更多評(píng)論   

    2009-08-13 16:32 by jadmin
    很好,學(xué)習(xí)了

    # re: ibatis學(xué)習(xí)(三)---ibatis與spring的整合  回復(fù)  更多評(píng)論   

    2009-08-15 23:15 by 匹馬單槍
    好帖, 學(xué)習(xí)了!

    # re: ibatis學(xué)習(xí)(三)---ibatis與spring的整合  回復(fù)  更多評(píng)論   

    2009-09-01 13:07 by 2
    為什么我的出錯(cuò)了

    # re: ibatis學(xué)習(xí)(三)---ibatis與spring的整合[未登錄](méi)  回復(fù)  更多評(píng)論   

    2010-04-28 11:10 by test
    autocommit 如果不設(shè)置為false, 事務(wù)有用么

    # re: ibatis學(xué)習(xí)(三)---ibatis與spring的整合  回復(fù)  更多評(píng)論   

    2010-11-01 13:42 by rr
    sqlMapClient里應(yīng)該注入dataSource

    # re: ibatis學(xué)習(xí)(三)---ibatis與spring的整合[未登錄](méi)  回復(fù)  更多評(píng)論   

    2011-09-19 16:27 by ddd
    不用封裝實(shí)體類嗎?

    # re: ibatis學(xué)習(xí)(三)---ibatis與spring的整合  回復(fù)  更多評(píng)論   

    2011-09-27 19:33 by LL
    public void select(User user) {

    getSqlMapClientTemplate().delete("selectUser ",user.getId());

    }


    出錯(cuò)了

    # re: ibatis學(xué)習(xí)(三)---ibatis與spring的整合  回復(fù)  更多評(píng)論   

    2012-04-28 14:42 by 張毅
    文章很好

    # re: ibatis學(xué)習(xí)(三)---ibatis與spring的整合  回復(fù)  更多評(píng)論   

    2012-09-04 14:02 by 蘭偉
    能幫幫我嗎 我在sqlserver上建了個(gè)user表 id為自增的主鍵 要增加個(gè)user 在配置文件中的selectkey 怎么寫(xiě)啊??

    # re: ibatis學(xué)習(xí)(三)---ibatis與spring的整合[未登錄](méi)  回復(fù)  更多評(píng)論   

    2012-10-09 17:22 by 1
    1

    # re: ibatis學(xué)習(xí)(三)---ibatis與spring的整合呃呃呃  回復(fù)  更多評(píng)論   

    2013-04-11 15:11 by 恩恩
    地對(duì)地導(dǎo)彈

    # re: ibatis學(xué)習(xí)(三)---ibatis與spring的整合[未登錄](méi)  回復(fù)  更多評(píng)論   

    2013-04-28 10:39 by tbw
    有沒(méi)有實(shí)例啊

    # re: ibatis學(xué)習(xí)(三)---ibatis與spring的整合[未登錄](méi)  回復(fù)  更多評(píng)論   

    2013-04-28 15:09 by 123
    很垃圾ibatis

    # re: ibatis學(xué)習(xí)(三)---ibatis與spring的整合  回復(fù)  更多評(píng)論   

    2013-10-08 14:08 by 可耕地
    在在苛下人手仍有雨

    # re: ibatis學(xué)習(xí)(三)---ibatis與spring的整合  回復(fù)  更多評(píng)論   

    2014-01-23 13:17 by 哈林木
    iBatis 是apache 的一個(gè)開(kāi)源項(xiàng)目,一個(gè)O/R Mapping 解決方案,iBatis 最大的特點(diǎn)就是小巧,上手很快。
    如果不需要太多復(fù)雜的功能,iBatis 是能夠滿足你的要求又足夠靈活的最簡(jiǎn)單的解決方案,現(xiàn)在的iBatis 已經(jīng)改名為Mybatis 了。

    近期項(xiàng)目用到 iBatis,所以需要學(xué)習(xí)iBatis,下面是總結(jié)幾個(gè)不錯(cuò)學(xué)習(xí)網(wǎng)站給大家學(xué)習(xí)參考:

    1、官網(wǎng)(英文資料):http://www.mybatis.org/

    2、iBATIS(中文教程):http://www.yiibai.com/ibatis/

    3、iBATIS - iBATIS Apache軟件基金會(huì)的官方網(wǎng)站。
    http://ibatis.apache.org/index.html

    # re: ibatis學(xué)習(xí)(三)---ibatis與spring的整合  回復(fù)  更多評(píng)論   

    2014-04-15 00:01 by 最代碼
    最代碼的轉(zhuǎn)載地址:http://www.zuidaima.com/share/1780211932679168.htm

    # re: ibatis學(xué)習(xí)(三)---ibatis與spring的整合  回復(fù)  更多評(píng)論   

    2014-05-13 11:33 by rh
    very good

    # re: ibatis學(xué)習(xí)(三)---ibatis與spring的整合  回復(fù)  更多評(píng)論   

    2014-06-27 17:24 by 。。。
    和Hibernate很相似。。

    # re: ibatis學(xué)習(xí)(三)---ibatis與spring的整合[未登錄](méi)  回復(fù)  更多評(píng)論   

    2014-11-11 14:48 by 小白
    applicationContext-common.xml文件在哪加載的,怎么沒(méi)講明白,沒(méi)加載等于沒(méi)用啊!

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 久久夜色精品国产亚洲AV动态图| 亚洲精品私拍国产福利在线| 伊人久久综在合线亚洲2019| 中文字幕亚洲码在线| 国产精品无码永久免费888| 亚洲一区二区三区免费视频| 亚洲AV无码不卡在线观看下载| 久久水蜜桃亚洲av无码精品麻豆| 亚洲国产午夜精品理论片在线播放| 国产在线观看免费av站| 毛片免费观看网站| 亚洲爆乳无码专区| 久久精品国产亚洲AV天海翼| 98精品全国免费观看视频| 免费人成视网站在线观看不卡| 亚洲美女精品视频| 人妻18毛片a级毛片免费看| 毛片免费观看的视频在线| 久久精品国产精品亚洲艾草网| 国产精品亚洲精品日韩动图| 2021精品国产品免费观看| 久久精品国产亚洲5555| 亚洲色偷精品一区二区三区| 少妇无码一区二区三区免费| 亚洲精品无码久久久| 亚洲看片无码在线视频| 午夜无码A级毛片免费视频| 亚洲成年看片在线观看| 亚洲精品无码一区二区| 曰批全过程免费视频播放网站| 久久综合亚洲色HEZYO国产| 亚洲AV无码专区在线电影成人 | 亚洲日韩精品无码专区| 免费精品99久久国产综合精品| 深夜国产福利99亚洲视频| 亚洲香蕉久久一区二区| 99re6免费视频| 久久国产精品亚洲综合 | 亚洲精品偷拍视频免费观看| 日韩人妻无码免费视频一区二区三区| 亚洲国产av一区二区三区丶|