- 情景:经常会遇到更新与新建的页面其实是一样的,前者字段都是全新编辑的,后者是在原有的基础上加以修改的,但后台要执行的都是保存操作,所以我们一般都写成一个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方法