接口需要同时接收多个查询参数时,往往使用
@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();
//业务代码.....
}