1. 功能介绍

    修改数据

  2. 开发步骤

    1. 编写HTML链接
    2. 编写页面Java事件
    3. 编写Java Bean方法
  3. 注意事项

    主要考虑同一个页面如果打开多次,或者有多个人同时访问,而在你更新之前已有人删除或修改过信息的状态,这样就需要传递目前获取的关键数据列,如主键,状态来识别信息是否能够修改,假如删除了,或者状态已被变更过则不能删除

  4. 代码片段

    1. 配置文件代码

    2. HTML写法(参考quickstart/web/examples/basic/VipcustList.html)

      <a jwcid="@wade:PageRedirect"
      source="ognl:info"
      columns="VIP_ID"
      value="ognl:info.VIP_ID"
      onclick="redirectTo('examples.basic.VipcustEdit', 'queryVipcust', parameters)"/>
      

      说明:跳转页面并传递定义的参数,将会将source指定的对象解析成url传递
    3. JAVA(PAGE)写法(参考quickstart/src/doc/../examples/basic/ExamplesBean.java)

      /**
       * 修改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[] { "新增资料", "查看详情" });
      }
      
    4. JAVA(BEAN)写法(参考quickstart/src/doc/../examples/basic/ExamplesBean.java)

      根据获取的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); //指定主键的名称和值修改表数据
      }
      

      说明:
      1. 按主键和指定主键列修改

        如果,表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中的数据

      2. save和update的区别

        update会将data中的所有数据更新,如果表字段原有的信息在data中没有指定,则这些信息会被清空,而save则会先去查出原记录的所有信息,再将需要更新的数据覆盖后更新通常,如果只是部分更新表字段的数据,则必须用save方法,除非data中的数据已经包含所有需要修改的信息,则用update方法,这样效率会高些。