SpringBoot项目中@RequestParam、@PathVariable、@Param的区别?

本文详细介绍了SpringBoot中@RequestParam、@PathVariable和@Param这三个注解的区别。@RequestParam用于接收请求参数,@PathVariable用于获取URL路径变量,而@Param在Dao层接口方法中用于多条件参数,使XML配置更简洁,参数顺序不受限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@RequestParam和@PathVariable的区别

@RequestParamRequest URL: http://api.leyou.com/api/item/brand/page?key=&page=1&rows=5&sortBy=id&desc=false
@PathVariableRequest URL: http://api.leyou.com/api/group/参数值

具体代码

@RequestParam

/**
     * 根据查询条件分页查询品牌信息
     * @param key
     * @param page
     * @param rows
     * @param sortBy
     * @param desc
     * @return
     */
    @GetMapping("page")
    public ResponseEntity<PageResult<Brand>> queryBrandsByPage(@RequestParam(value = "key",required = false)String key, @RequestParam(value = "page",defaultValue = "1")Integer page, @RequestParam(value = "rows",defaultValue = "5")Integer rows, @RequestParam(value = "sortBy",required = false)String sortBy, @RequestParam(value = "desc",required = false)Boolean desc) {
        PageResult<Brand> result = this.brandService.queryBrandsByPage(key, page, rows, sortBy, desc);

        if (CollectionUtils.isEmpty(result.getItems())) {
            return ResponseEntity.notFound().build();
        }
        return ResponseEntity.ok(result);
    }

@PathVariable

@GetMapping("group/{cid}")
    public ResponseEntity<List<SpecGroup>> queryGroupByCid(@PathVariable("cid")Long cid){

        return ResponseEntity.status(HttpStatus.OK).build();
    }

@Param

  1. @Param主要应用Dao层
  2. Dao层接口方法中参数列表中的多个条件参数时,且对应xml中传入的参数不一致
  3. 使用@Param,xml中无需写parameterType
  4. 参数的顺序无关

代码示例

@Select("select * from role where name = #{name} and dept_id = (select dept_id from dept where uid = #{uid})")
UserVo queryUserAll(@Param("name")String name,@Parma("uid")Integer uid);
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值