修改数据
主要考虑同一个页面如果打开多次,或者有多个人同时访问,而在你更新之前已有人删除或修改过信息的状态,这样就需要传递目前获取的关键数据列,如主键,状态来识别信息是否能够修改,假如删除了,或者状态已被变更过则不能删除
无
<a jwcid="@wade:PageRedirect" source="ognl:info" columns="VIP_ID" value="ognl:info.VIP_ID" onclick="redirectTo('examples.basic.VipcustEdit', 'queryVipcust', parameters)"/>
/**
* 修改VIP客户资料
* @param cycle
* @throws Exception
*/
public void updateVipcust(IRequestCycle cycle) throws Exception {
PageData pd = getPageData();
String vip_id = pd.getParameter("VIP_ID");
String remove_tag = pd.getParameter("REMOVE_TAG");
ExamplesBean bean = new ExamplesBean();
if (!bean.updateVipcust(pd, pd.getData(), new String[] {vip_id, remove_tag}))
common.error("修改失败,信息在此操作前已经被操作过");
/* 传递PageData中已有的参数到下页 */
pd.setTransfer("VIP_ID");
redirectToMsg("VIP客户资料新增成功,选择【新增资料】跳转到[VIP客户资料新增]页面,选择【查看详情】跳转到[VIP客户资料详情]页面",
new String[] { getPageName(), getPageName() }, new String[] { null, "queryVipcust" }, new String[] { "新增资料", "查看详情" });
}
根据获取的data数据,以及能够识别能否修改的关键列值匹配表中是否有此记录,如果有返回true,否则返回false。
/** * 修改VIP客户资料并根据传入的编号、注销标记判断是否能够修改(注销后不能再修改) * @param pd * @param data * @param values * @return boolean * @throws Exception */ public boolean updateVipcust(PageData pd, IData data, String[] values) throws Exception { ExamplesDAO dao = new ExamplesDAO(pd); return dao.save("TF_F_CUST_VIP", data, new String[] {"VIP_ID", "REMOVE_TAG"}, values); //指定主键的名称和值修改表数据 }
如果,表TF_F_CUST_VIP没有主键或者有多个主键,但希望指定相应的列对数据更新,可以在update、save方法后面加上参数new String[] { "VIP_ID", "REMOVE_TAG" },程序将会将根据绑定的列名和值对数据更新,默认没有这个参数的话,是根据表结构主键进行更新,如dao.save("TF_F_CUST_VIP", data, new String[] { "VIP_ID", "REMOVE_TAG" });按VIP_ID和REMOVE_TAG更新data中的数据
update会将data中的所有数据更新,如果表字段原有的信息在data中没有指定,则这些信息会被清空,而save则会先去查出原记录的所有信息,再将需要更新的数据覆盖后更新通常,如果只是部分更新表字段的数据,则必须用save方法,除非data中的数据已经包含所有需要修改的信息,则用update方法,这样效率会高些。