ibatis.net也用了快一个月了,可还不是很熟练。以前都是用他来search,get数据,从没用过updata,今天终于要修改数据了,才发现原来根本不能依靠自己立马做出来。学习了别人的东西以后自己也摸索出来了方法,其实并不难,关键在于对整个ibatis的理解。
首先就是hashtable,到处都是hashtable,常用的hashparam其实就是hashtable的封装。当然了这都是codesmith生成的一些类库内容。
也许你已经想到了,对于数据过滤(where)也同样是要用到hashtable
这是Persistence下的Dao的一个文件,
![]()
![]() Code
Code
        #region Update
        public void Update( AuditApply auditapply )
        {
            ExecuteUpdate("Update_AuditApply",auditapply);
        }
        public void Update( Hashtable ht )
        {
            ExecuteUpdate("_Update_AuditApply",ht);
        }
        public void Update( string id, Hashtable ht )
        {
            ht["AuditApplyId"] = id;
            ExecuteUpdate("_Update_AuditApply",ht);
        }
        #endregion  (图1)
看到了吧,除了第一个方法其他都是hashtable,所以我们当然要从他下手来解决问题。
 
![]()
![]() Code
Code
        Hashtable ht = new Hashtable();
        ht["Status"] = "accepted";
        ht["AuditApplyId"] = Request.QueryString["AuditApplyId"].ToString();
        ***.Persistence.DaoAuditApply daoAuditApply = new ***.Persistence.DaoAuditApply();
        daoAuditApply.Update(Request.QueryString["AuditApplyId"].ToString(), ht);
        Response.Write(" <span style=font-size:20pt;color:red>**********</span>");(图2)
这是项目中的一段代码,AuditApplyId是某个表的查询依据,(ht["AuditApplyId"] = Request.QueryString["AuditApplyId"].ToString();测试以后发现这句是可以去掉的,因为我们已经用querystring来给过了ID)当然了这里还要提到的就是在xml的配置文件中一定要有对应的这个字段
![]()
![]() Code
Code
<update id="_Update_AuditApply" parameterClass="Hashtable">
    Update AuditApply Set
        <dynamic  prepend=" " >
        <isNotNull prepend="," property="AuditDate" >auditdate=#AuditDate#</isNotNull>
        <isNotNull prepend="," property="Remark" >remark=#Remark#</isNotNull>
        <isNotNull prepend="," property="ApplyReason" >applyreason=#ApplyReason#</isNotNull>
        <isNotNull prepend="," property="AuditRequest" >auditrequest=#AuditRequest#</isNotNull>
        <isNotNull prepend="," property="CostSource" >costsource=#CostSource#</isNotNull>
        </dynamic>
    WHERE
        <dynamic  prepend=" " >
        <isNotNull prepend="," property="AuditApplyId" >auditapplyid=#AuditApplyId#</isNotNull>
        </dynamic>
</update>(图3)
看到了吧,在xml中where后面有对应的该字段,所以我们就可以放心大胆的去依据他更新数据了。
现在回到
![]()
![]() Code
Code
        Hashtable ht = new Hashtable();
        ht["Status"] = "accepted";
        ht["AuditApplyId"] = Request.QueryString["AuditApplyId"].ToString();
        ***.Persistence.DaoAuditApply daoAuditApply = new ***.Persistence.DaoAuditApply();
        daoAuditApply.Update(Request.QueryString["AuditApplyId"].ToString(), ht);
        Response.Write(" <span style=font-size:20pt;color:red>**********</span>");(图2)
我们之前发现(图1)中的最后一个方法,两个参数,一个是表的PK,另一个是用来给数据的hashtable,key=字段名,value=要更新的值,于是乎这样就完成了数据的更新,也许你的项目文件名和类名不太一样因为是codesmith生成的,不过大致意思都是相同的。方法当然不止这一种,但是吃透了这一种恐怕别的就不成问题了。
 
东西很简单不过我也试验了好一会儿,自己也做个记录也跟大家分享。网上ibatis.net的资源相当少,希望对大家能有个帮助
第一次写这么多,可能有点乱让大家见笑了!![]()