@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是为了接收表单中复选框提交的数据。复选框在提交的时候,会提交选中的每一项。
例如,表单中要提交的信息如下:
提交的数据如下:
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
2、required: 为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中指定参数的名称
* 2、required: 为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时使用最佳。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示