Spring中三個註解@PathVariable、@Param和@RequestParam間的區別
阿新 • • 發佈:2021-07-26
@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