ibatis.net也用了快一个月了,可还不是很熟练。以前都是用他来search,get数据,从没用过updata,今天终于要修改数据了,才发现原来根本不能依靠自己立马做出来。学习了别人的东西以后自己也摸索出来了方法,其实并不难,关键在于对整个ibatis的理解。
首先就是hashtable,到处都是hashtable,常用的hashparam其实就是hashtable的封装。当然了这都是codesmith生成的一些类库内容。
也许你已经想到了,对于数据过滤(where)也同样是要用到hashtable
这是Persistence下的Dao的一个文件,
![ContractedBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
#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](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
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](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
<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](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
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的资源相当少,希望对大家能有个帮助
第一次写这么多,可能有点乱让大家见笑了!