@Param 和 @RequestParam 的关系

@Param和@RequestParam是什么关系呢?其实它们没有关系,就跟Java和JavaScript,雷锋和雷锋塔一样,拥有相似的外表,其实作用是不一样的,@Param是地处Dao层,是为了传递多个参数,解决的是可读性和直观性;而@RequestParam是位列Controller层,作用是为获取前端参数,解决的是前后端参数不一致的问题。所以它们没有关系!

 

 

=======================================================================

(一) 转自:https://class.imooc.com/course/qadetail/251374

 

1、@RequestParam注解用于将请求参数绑定到Controller的方法参数上。

以下三种情况需要加@RequestParam注解:

a. 当请求参数的参数名与方法中参数名称不一致,导致绑定失败时,要加@RequestParam注解,并设置name或value属性值为请求参数的参数名。

b. 当请求参数必须传时,要加@RequestParam注解,其中required值默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。

c. 当要设置请求参数的默认值时,要加@RequestParam注解,通过设置defaultValue值。

2、使用List是为了接收表单中复选框提交的数据。复选框在提交的时候,会提交选中的每一项。

例如,表单中要提交的信息如下:

http://img.mukewang.com/climg/5f4c66500970503203020225.jpg

提交的数据如下:

http://img.mukewang.com/climg/5f4c666909eb5d3503250120.jpg

3、使用Map为了说明可以使用Map接收表单数据,表单中name值就是Map中的key。使用Map可以代替实体类Form。

 

 

 

=======================================================

(二)

语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””)

  • value:参数名
  • required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。
  • defaultValue:默认参数值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值

 

=======================================================

 

(三) 转自:http://t.zoukankan.com/zlw-xf-p-9464929.html

@RequestParam注解的作用及用法

最简单的两种写法,在写接口时:加或不加@RequestParam注解的区别

第一种写法参数为非必传,第二种写法参数为必传。参数名为userId

第二种写法可以通过@RequestParam(required = false)设置为非必传。因为required值默认是true,所以默认必传

第二种写法可以通过@RequestParam("userId")或者@RequestParam(value = "userId")指定参数名

第二种写法可以通过@RequestParam(defaultValue = "0")指定参数默认值

用法如下:

====================================================================

 

(四) 转自:https://www.jianshu.com/p/06667e4580a8

1、可以对传入参数指定参数名

@RequestParam String inputStr  
// 下面的对传入参数指定为aa,如果前端不传aa参数名,会报错  
@RequestParam(value="aa") String inputStr 

**错误信息:** 
**HTTP Status 400 - Required String parameter 'aa' is not present** 

2、可以通过required=false或者true来要求@RequestParam配置的前端参数是否一定要传

// required=false表示不传的话,会给参数赋值为null,required=true就是必须要有  
@RequestMapping("testRequestParam")    
public String filesUpload(
    @RequestParam(value="aa", required=true) String inputStr,
     HttpServletRequest request)  

 3、如果用@RequestMapping注解的参数是int基本类型,但是required=false,这时如果不传参数值会报错,因为不传值,会赋值为null给int,这个不可以

@RequestMapping("testRequestParam")    
public String filesUpload(
    @RequestParam(value="aa", required=true) String inputStr, 
    @RequestParam(value="inputInt", required=false) int inputInt,
    HttpServletRequest request) {    
// ......省略  
return "index";  
}  


=====================================================================
转自:https://blog.csdn.net/qq_39084191/article/details/107735458?ops_request_misc=&request_id=&biz_id=102&utm_term=SpringBoot%E4%B8%AD%20@Param%E6%B3%A8%E8%A7%A3&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-8-107735458.142^v96^control&spm=1018.2226.3001.4187

1@pathVariable
1.1 PathVariable使用案例:

@GetMapping("dept/{id}")
public Department getById(@PathVariable("id" )Integet id )

1.2参数解析:

    1、name/value:RequestMapping注解中url路径绑定参数的名称,如/pathVariable/test/{param},则name的值就为param
    2required: 为true时,这个参数必选填写,默认是true,为false时:参数可选是否填写


2.@RequestParam
2.1 Requestparam使用案例

      @RequestMapping("/requestParam/user?id=1")
    @ResponseBody
    public String requestParamTest(@RequestParam(value = "id",required = true,defaultValue = "1")String id){
        return "接受到的参数:" + id;
    }


2.2 参数解析

    RequestParam: 主要用在Controller层,用于获取URL中“?”后携带的参数的值,如:
    http://localhost:8080/requestParam/user?id=1中id参数的值
    * 相关属性:
    * 1、name/value:url中指定参数的名称
    * 2required: 为true时,这个参数必选填写,默认是true,为false时:参数可选是否填写
    * 3、defaultValue:参数不填写时的默认值
    **/

3.@Parma
3.1 Param使用案例

public List<User> findUser(@Param("userName") String userName, @Param("department") String department);

    1

3.2 参数解析

    @Param是MyBatis所提供的(org.apache.ibatis.annotations.Param),主要用于DAO层,作用是用于传递参数,从而可以与SQL中的的字段名相对应,一般在2=<参数数<=5时使用最佳。






posted @   sensen~||^_^|||&  阅读(300)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示