• 情景:经常会遇到更新与新建的页面其实是一样的,前者字段都是全新编辑的,后者是在原有的基础上加以修改的,但后台要执行的都是保存操作,所以我们一般都写成一个save方法,但是如何区别要进行的究竟是更新还是新建呢?
  • 思路:通过判断对象是否存在或者id是否为空,来决定前端要进行的是新建还是更新操作;若为新建则new一个对象来接收传进来的字段,否则让这个对象指向数据库查询到的对象,最后同样都是保存这个对象到数据库,即可。

    /**
     * 保存文档,若id不存在则新建文档
     **/
    @RequestMapping(value = "/save",method = RequestMethod.POST)
    @ResponseBody
    public Map<String,Object> save(HttpServletRequest request, HttpServletResponse response){
        Map<String,Object> map =new HashMap<String,Object>();
    
        String id = request.getParameter("id");
        String content = request.getParameter("content");
        String title = request.getParameter("title");
        String infor = request.getParameter("infor");
        String group = request.getParameter("group");
        Document document;
        boolean flag = true;
    
        //更新文档
        if (id!=null&&!id.equals("")&&Integer.parseInt(id)>0){
             document = documentRepository.findOne(Integer.parseInt(id));
            if(document==null){
                flag= false;
            }
        }
        //新建文档 所以前端新建文档时,传的id要为空
        else document = new Document();
    
        if(flag){
            document.setContent(content);
            document.setTitle(title);
            document.setInfor(infor);
            document.setModel(group);
            documentRepository.save(document);
            map.put("result", 1);
            map.put("message", "成功保存文档!");
            logger.info("成功保存文档!");
        }else{
            map.put("result", 0);
            map.put("message", "保存文档失败!");
            logger.error("保存文档失败!");
        }
        map.put("data",document);
        return map;
    }
    
  • 代码实例:LLCWEB/DocumentContoller/save方法