多查询参数:使用@ParameterObject

5,574 阅读1分钟

接口需要同时接收多个查询参数时,往往使用@RequestParam注解,但是参数很多的话,用这个注解就会显得代码很臃肿,因此推荐使用SpringDoc OpenAPI提供的@ParameterObject注解,将多个参数以对象的方式接收。

使用@ParameterObject步骤
引入依赖
<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-api</artifactId>
    <version>2.3.0</version>
</dependency>
创建查询参数类
import lombok.Data;
/**
 * 基础分页请求对象
 */
@Data
public class BasePageQuery {
    //页码
    private int pageNum = 1;
    //每页记录数
    private int pageSize = 10;
}
import lombok.Data;
/**
 * 品牌分页查询实体
 */
@Data
public class BrandPageQuery extends BasePageQuery {
    //关键字(品牌名称/检索首字母/介绍)
    private String keywords;
}
在接口中使用注解
/**
 * 分页获取品牌列表
 */
@GetMapping("/getAllBrandPage")
public PageResult<Brand> getAllBrand(@ParameterObject BrandPageQuery brandPageQuery){
    Page<Brand> result =  brandService.getBrandPage(brandPageQuery);
    return PageResult.success(result);
}
service层代码,从brandPageQuery中获取查询参数
@Override
public Page<Brand> getBrandPage(BrandPageQuery brandPageQuery) {
     int pageNum = brandPageQuery.getPageNum();
     int pageSize = brandPageQuery.getPageSize();
     String keywords = brandPageQuery.getKeywords();
     //业务代码.....
}
参考文档:github.com/springdoc/s…