【ssm框架】增删改查的最佳实践

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Hemk340200600/article/details/78145538

在javaweb网站项目开发的过程当中,增删改查一直是最主要的内容,下面是经过最近的项目实战总结出来的一套SSM框架进行增删改查的架构。

 

我们知道,利用controller可以跳转页面,同时带上我们处理后得到的数据。

在controller中我们可以设置这样一段代码

@ModelAttribute("user")
    public User get(@RequestParam(required= false, value = "id") Long id) throws Exception {
        if (id != null && id >0) {
            returnuserService.queryById(id);
        } else {
            return new User();
        }
    }

@RequestParam这个注解的作用是什么呢?他有两个值,requiredvalue,其中value将和我们前台传入的参数进行对应,比如前台传入id=1,就会被这里获取到。required可以设置为true或者false,为true时,表示必须传入这个参数,如果前台没有传入id这个参数,则会报错。如果如果设置为false则传或者不传都可以。

 

注意到方法的上面还有一个注解@ModelAttribute注解。@ModelAttribute的使用方法有多种。其中一种是标记在方法上面的@ModelAttribute,还有一种是标记在方法参数前面的@ModelAttribute。

标记@ModelAttribute的方法,会在各种请求之前执行。也就是说,即使请求对应的是其他方法,标记@ModelAttribute的方法也会在这之前执行。它可以有返回值,也就是说他可以返回各种各样的东西

标记@ModelAttribute的参数,会优先去获得标记了@ModelAttribute的方法的返回值来填充。上面的get方法中标记了@ModelAttribute("user"),那么如果我有另外一个方法的参数是@ModelAttribute User user,这个方法在被调用的时候就会先执行get方法来填充user。

 

那怎么把参数传到前台页面进行展示呢?比如我们要把user对象传到前台,可以在方法参数中添加一个Model model,ssm框架会自动帮我们获取,然后我们只需要调用model.addAttribute(“user”,user),这样下一个页面就会获取到我们传过去的user对象了。

前台获取到对象之后进行数据的展示的方法也很简单。直接${user.id},${user.name}这样,框架会帮我们解析并显示。


前端代码:

<tr>
    <td><label>用户名称</label></td>
    <td><inputclass="easyui-textbox" type="text"name="username" value="${user.username}"data-options="required:true" style="width: 200px;" /></td>
</tr>
<tr>
    <td><label>用户账号</label></td>
    <td><inputclass="easyui-textbox" type="text" name="account"value="${user.account}" data-options="required:true"style="width: 200px;" /></td>
</tr>
<tr>
    <td><label>用户密码</label></td>
    <td><inputtype="password" class="easyui-validatebox"id="pwd" name="pwd" style="width: 200px;"/></td>
</tr>
<tr>
    <td><label>确认密码</label></td>
    <td><inputtype="password" class="easyui-validatebox"name="rpassword" validType="equals['#pwd']"style="width: 200px;" /></td>
</tr>

后端代码:

public class EUDataGridResult {
   private long total;
   private List<?> rows;
   public long getTotal() {
      return total;
   }
   public void setTotal(long total) {
      this.total = total;
   }
   public List<?> getRows() {
      return rows;
   }
   public void setRows(List<?>rows) {
      this.rows = rows;
   }
}
 
@Controller
@RequestMapping("/console/user")
public class UserController extends BaseController{

    @Autowired
    private UserService userService;

    @ModelAttribute("user")
    public Userget(@RequestParam(required = false, value = "id") Long id) throwsException {
        if (id != null && id >0) {
            returnuserService.queryById(id);
        } else {
            return new User();
        }
    }

    @RequestMapping(value ="/list", produces = "text/html;charset=utf-8", method =RequestMethod.GET)
    public String listView(Model model) {
        return"console/user/list";
    }

    @RequestMapping(value ="/list.json", produces = "application/json;charset=utf-8")
    @ResponseBody
    public EUDataGridResult list(Integerpage, Integer rows, String keywords, UserType type){
        EUDataGridResult result = newEUDataGridResult();
        try {
            PageInfo<User> pageInfo= userService.listByPage(page, rows, keywords, type);
            result.setTotal(pageInfo.getTotal());
           result.setRows(pageInfo.getList());
        } catch (Exception e) {
            e.printStackTrace();
        }

        return result;
    }

    @RequestMapping(value ={"/add", "/edit"}, produces ="text/html;charset=utf-8", method = RequestMethod.GET)
    public String edit(@ModelAttributeUser user, Model model) throws Exception {
       model.addAttribute("types", UserType.values());
       model.addAttribute("user", user);
        return"console/user/edit";
    }

    @RequestMapping(value ="/edit", produces = "application/json;charset=utf-8",method = RequestMethod.POST)
    @ResponseBody
    public EUResult form(@ModelAttributeUser user, String pwd) {

        EUResult result = new EUResult();
        try {
            if (userService.checkAccount(user)){
                result =EUResult.build(EUResult.FAIL, "用户账号已存在,请重新输入!");
            } else {
                if (user.getId() != null&& user.getId() > 0) {
                   //编辑逻辑
                } else {
                    //新增逻辑
                }
               result.setStatus(EUResult.OK);
                result.setMsg("用户信息保存成功!");
            }
        } catch (Exception ex) {
           result.setStatus(EUResult.FAIL);
            result.setMsg(ex.getMessage());
        }

        return result;
    }

    @RequestMapping(value ="/delete", method = RequestMethod.POST, produces ="application/json;charset=utf-8")
    @ResponseBody
    public EUResult delete(String ids) {
        EUResult result = new EUResult();
        if (StringUtils.isNotEmpty(ids)){
            List<Long> idsArry =Arrays.asList(CommonUtils.getIdsArray(ids));
            try {
               result.setStatus(EUResult.OK);
                String msg ="";
                for (Long id : idsArry) {
                    msg = msg +userService.deleteOnCheck(id) + "<br>";
                }
                result.setMsg(msg); 
            } catch (Exception e) {
               result.setStatus(EUResult.FAIL);
                result.setMsg("删除用户时发生异常!" + e.getMessage());
            }
        } else {
           result.setStatus(EUResult.FAIL);
            result.setMsg("请选择要删除的用户!");
        }
        return result;
    }
 

猜你喜欢

转载自blog.csdn.net/Hemk340200600/article/details/78145538