用ibatis.net简单的数据更新

ibatis.net也用了快一个月了,可还不是很熟练。以前都是用他来search,get数据,从没用过updata,今天终于要修改数据了,才发现原来根本不能依靠自己立马做出来。学习了别人的东西以后自己也摸索出来了方法,其实并不难,关键在于对整个ibatis的理解。

首先就是hashtable,到处都是hashtable,常用的hashparam其实就是hashtable的封装。当然了这都是codesmith生成的一些类库内容。

也许你已经想到了,对于数据过滤(where)也同样是要用到hashtable

这是Persistence下的Dao的一个文件,

ContractedBlock.gif ExpandedBlockStart.gif 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,所以我们当然要从他下手来解决问题。

 

ContractedBlock.gif ExpandedBlockStart.gif 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的配置文件中一定要有对应的这个字段

ContractedBlock.gif ExpandedBlockStart.gif 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后面有对应的该字段,所以我们就可以放心大胆的去依据他更新数据了。

现在回到

ContractedBlock.gif ExpandedBlockStart.gif 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的资源相当少,希望对大家能有个帮助

第一次写这么多,可能有点乱让大家见笑了!

转载于:https://www.cnblogs.com/Prewin/archive/2008/11/07/1329029.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值