springMVC的@Param注解和@RequestParam注解的区别

@Param 的代码

 @Insert("insert into sys_role_permission(permissionid,roleid) values (#{permissionId},#{roleId})")
    int addRolePermission(@Param("permissionId") Integer pId, @Param("roleId") Integer roleId);

@Param:

  1. 当 @Insert 后面的条件有多个的时候 values (#{permissionId},#{roleId}) ,并且方法中的 int addRolePermission(@Param("permissionId") Integer pId, @Param("roleId") Integer roleId); 参数名pId,roleId和 sql中的条件参数#{permissionId} ,#{roleId} 的名称不一致的时候,就可以使用 @Param 来指定 sql后面的参数名
  2. 使用@Param后,接口中的参数顺序也可以打乱,只要id唯一即可
  3. 当只有一个参数的时候可以不使用此注解
  4. 主要是作用在dao层

@RequestParam的代码

 /**
     * 增加当前用户的所有角色信息
     * @param ids
     * @param userId
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/role/add",method = RequestMethod.POST)
    public Map addRoleUser(@RequestParam("ids") List ids,@RequestParam("userId") Integer userId)
    {

        HashMap resultJson = new HashMap<>();
        int result = 0;
        try {
            result = userService.addUserRole(ids, userId);
        } catch (Exception e) {
            resultJson.put("success", false);
            resultJson.put("message", "授权失败");
            e.printStackTrace();
        }

        if (result > 0) {
            resultJson.put("success", true);
            resultJson.put("message", "授权成功");
        }
        return resultJson;
    }

@RequestParam

  1. 前端提交的form表单数据的name属性 和方法中的参数名不一致时 ,springMVC就无法自动封装参数,所以需要@RequestParam(前端name属性名称)来指定前端提交的表单的name属性的名称
  2. 当前端的name属性和方法的参数名一致的时候,可以不使用此注解
  3. 主要作用在Controller层

前端jsp页面

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>



    
    
    
    用户角色管理

ID 角色名字 角色描述
checked="checked" type="checkbox" value="${role.id}"> ${role.id} ${role.roleName } ${role.roleDesc}

 

你可能感兴趣的:(javascript)