ssj框架集成:解决数据丢失的方案三种方案

1.隐藏域 (前端页面写):麻烦,要写很多代码

2.SQL中不修改 (domain中通过注解将sql写死):不利于后面扩展

3.修改时先去数据库中查询:

注释:@ModelAttribute : 在访问任意路劲这个方法的时候会先执行它

 

            解决n-to-n的问题

 

            添加:/employee/save 修改:/employee/update?cmd=update

//保存方法
@RequestMapping("/save")
@ResponseBody
public Boolean save(Employee employee){
    if(employee.getDepartmentId().getId()==null||"".equals(employee.getDepartmentId().getId())){
        employee.getDepartmentId().setId(4L);
    }
    try {
        iEmployeeService.save(employee);
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    }
    return true;
}
//修改方法
@RequestMapping("/update")
@ResponseBody
public Boolean update(@ModelAttribute("copyEmployee") Employee employee){
    try {
        iEmployeeService.save(employee);
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    }
    return true;
}
//解决数据丢失问题
@ModelAttribute("copyEmployee")
public Employee copyEmployee(Long id,String param){
    //设定只有修改的时候才执行
    if(id!=null&&"update".equals(param)){
        Employee employee = iEmployeeService.findOne(id);
        /*
            解决n-to-n问题:让department为空,
            不然会因为前台传来departmentId.id这个参数
            而导致departmentId.id分割成而导致departmentId和id,生成持久化参数
         */
        employee.setDepartmentId(null);
        return employee;
    }
    return null;
}

 

posted @ 2019-04-03 19:12  三只小菜鸟  阅读(191)  评论(0编辑  收藏  举报