保存修改数据记录(数据库)

 

 

要求:保存修改的记录,保存在数据库中(以保存人员基本信息表为例)

 

修改保存思路

  两个表:①变更基本表

        ②一个变更明细表

 

  四个方法:①获取前台信息

            ②处理数据

            ③添加变更基本表

            ④添加变更明细表

 

  注意方面:①处理数据为空时

            ②处理数据相同时  

 

 

两个表

数据字典:

 

 

四个方法:

  ①获取前台处理信息

    这个方法主要是对前台的传来的数据进行获取并根据变更的类型来进行操作,根据类型的不同来进行判断进入不同的方法。

  ②处理数据

    这个方法主要是对数据进行处理,分别对新旧数据进行对比,对比结果封装并传给下一个方法。(这里解决注意方面的问题)。

   ③添加到变更基本表

    获取信息,保存到数据库。(返回值为表单ID)。

  ④添加到变更明细表

    获取信息(包括表单ID),保存到数据库。

 

 

注意方面:

  ①处理数据为空时

    当前台传来的数据为空时,手动赋值给它空字符串(" ")。

 

   ②处理数据相同时 

// 如果内容没有修改就跳出遍历,不再赋值
    if (changeAfter.equals(changeBefore)) {
            continue;
    }

 

 

 整体思路代码(大概):

   

    /**
     * 获取前台信息,保存到两个表中
     * 
     * @param map
     *            前台传来的数据
     * @author 令狐不要葱
     * @date 2017-11-23
     * @version 1.0
     */
    public static void saveChangeInfo(Map<String, String> map) {
        // 获取修改类型
        String actionType = map.get("actionType");
        // 从前台获得用户ID,也可以在保存时获得
        String personID = map.get("personID");
        String name = map.get("name");
        // ...
        // 如果类型为新增
        if (actionType.equals("add")) {
            // 首先先添加到个人基本信息表中,获得peersonID
            // ...
            // 处理基本信息
            List<Map<String, String>> detailsInfo = getDetailsInfo(null, map);
            // 保存到基本变更表中(用户ID,类型为1),返回值为基本变更表ID
            String changeID = addpersonInfoChange(personID, 1);
            // 保存到变更明细表(基本信息表ID,处理的数据)
            addChangeDetails(changeID, detailsInfo);
        } else if (actionType.equals("edit")) {

            // 获取旧数据oldPerson
            Map<String, String> oldPerson;

            // 到个人基本信息表中修改
            // ...

            // 处理基本信息
            List<Map<String, String>> detailsInfo = getDetailsInfo(oldPerson,
                    map);
            // 保存到基本变更表中(用户ID,类型为1),返回值为基本变更表ID
            String changeID = addpersonInfoChange(personID, 2);
            // 保存到变更明细表(基本信息表ID,处理的数据)
            addChangeDetails(changeID, detailsInfo);
        }
    }

    /**
     * 
     * 处理数据
     * 
     * @param oldPerson
     *            旧数据
     * @param newPerson
     *            新数据
     * @return 处理明细表中保存的数据
     * @author 令狐不要葱
     * @date 2017-11-23
     * @version 1.0
     */
    public static List<Map<String, String>> getDetailsInfo(
            Map<String, String> oldPerson, Map<String, String> newPerson) {

        List<Map<String, String>> detailsinfo = new ArrayList<Map<String, String>>();
        Map<String, String> mapTmp;
        // 修改字段,修改字段描述,修改前值,修改后值
        String fieldName, fieldContent, changeBefore, changeAfter;

        Iterator<String> i = newPerson.keySet().iterator();

        // 遍历新的个人信息集合
        while (i.hasNext()) {
            // 给字段赋值(NAME)
            fieldName = i.next();
            // 给修改后值赋值
            changeAfter = newPerson.get(fieldName);

            // 给修改前值赋值
            if (null != oldPerson && oldPerson.containsKey(fieldName)) {
                changeBefore = oldPerson.get(fieldName);
            } else {
                changeBefore = "";
            }

            // 如果内容没有修改就跳出遍历,不再赋值(注意问题)
            if (changeAfter.equals(changeBefore)) {
                continue;
            }

            // 给修改字段描述赋值
            if ("NAME".equals(fieldName)) {
                fieldContent = "姓名";
            }
            // else if("sex".equals(fieldName)){}
            mapTmp = new HashMap<String, String>();
            mapTmp.put("field_name", fieldName);
            mapTmp.put("field_content", fieldContent);
            mapTmp.put("change_before", changeBefore);
            mapTmp.put("chenge_after", changeAfter);
            detailsinfo.add(mapTmp);

        }
        return detailsinfo;
    }

 

 

转载于:https://www.cnblogs.com/ang-664455/p/7887223.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值