1. 程式人生 > 其它 >Spring中三個註解@PathVariable、@Param和@RequestParam間的區別

Spring中三個註解@PathVariable、@Param和@RequestParam間的區別

@PathVariable

程式碼示例:

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

特點:

1) 應用在Controller層

2) @PathVariable是spring3.0的一個新功能:可接收請求路徑中佔位符的值,通過 @PathVariable 可以將URL中佔位符引數{uid}繫結到處理器類的方法形參uid中 —— @PathVariable(“uid“)

3) 請求路徑中佔位符的名字可與方法引數名不一樣

@RequestParam

程式碼示例:

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

特點:

1)@RequestParam主要應用在Controller層

2)前端提交的form表單資料中的屬性名和方法中的引數名不一致時 ,springMVC就無法自動封裝引數,所以需要 @RequestParam("前端所傳屬性名") 來指定前端提交的表單的屬性的名稱

3)前端提交的form表單資料中的屬性名和方法中的引數名一致時,可以不使用此註解

@Param

程式碼示例:

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

特點:

1)@Param主要應用在Dao層

2)註解中的sql語句有多個條件引數,且和方法中的引數名稱不一致,此時可以使用@Param註解

3)只有一個引數時,可以不使用註解(不過還是建議使用= =)

4)引數的順序無關

參考:

https://blog.csdn.net/pengfudian1991/article/details/96336898

https://blog.csdn.net/qq_36268103/article/details/109994954