@PathVariable、@Param、@RequestParam、@RequestBody间的区别

作者: adm 分类: java 发布时间: 2022-09-14

@RequestBody常常将前端传来的post请求(Json格式的数据)进行解析,例如批量插入数据时,需要@RequestBody

@ResponseBody就是为了将Java对象以Json格式的形式传给前端(举个生活中的例子,用邮箱发邮件,根据SMTP协议,以数据流【随便说的,反正是某种特定形式啦】的形式发给对方,其实这个中间的形式跟Java前后端相连是不是很像)
代码示例:

public Result add(@RequestBody ExportCargoOrderCommon exportCargoOrderCommon) {
		exportCargoOrderCommon.setOrderNo(Tools.setOrderNo());
		exportCargoOrderCommon.setIsDelete(0);
		exportCargoOrderCommonService.save(exportCargoOrderCommon);
		return Result.OK("添加成功!");
	}

特点:
@Param主要应用在Dao层
注解中的sql语句有多个条件参数,且和方法中的参数名称不一致,此时可以使用@Param注解
只有一个参数时,可以不使用注解(不过还是建议使用= =)
参数的顺序无关
代码示例:

@Select("select * from user where uid = #{uid} and uname = #{uname}")
List getUserList(@Param("uid") Integer id, @Param("uname") String name);

@RequestParam主要应用在Controller层
前端提交的form表单数据中的属性名和方法中的参数名不一致时 ,springMVC就无法自动封装参数,所以需要 @RequestParam(“前端所传属性名” 来指定前端提交的表单的属性的名称
前端提交的form表单数据中的属性名和方法中的参数名一致时,可以不使用此注解
代码示例:

@ResponseBody
@RequestMapping(value = "/user/get", method = RequestMethod.POST)
public List getUserList(@RequestParam("uid") Integer id, @RequestParam("uname") String name) {
}

@PathVariable
spring3.0的一个新功能:应用在Controller层,可接收请求路径中占位符的值,通过 @PathVariable 可以 – – 将URL中占位符参数{uid}绑定到处理器类的方法形参uid中 —— @PathVariable(“uid“)
请求路径中占位符的名字可与方法参数名不一样:public User getUserById(@PathVariable(“uid”) Long id)
代码示例:

@ResponseBody
@RequestMapping("/user/{uid}")
public User getUserById(@PathVariable("uid") Long uid) {
}

// 请求路径:http://localhost:8080/user/12001

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!