SpringBoot使用Swagger后Pageable显示异常

admin 185 0

问题情景

使用SpringBoot+JPA后,允许请求带分页参数。但是Pageable接口是预先定义的,会被Swagger解析到后的文档出现错误。

解决方案

  • 自己重写Pageable接口,比如做个PageVO类,再用注解标记(对Mybatis友好,JPA因为有写好的分页接口,建议直接利用)

  • Swagger官方提供了Pageable的处理方案


第二种方案如下:

package club.web51.classroominteractiontoolsadmin.Config;


import com.fasterxml.classmate.TypeResolver;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.data.domain.Pageable;
import springfox.documentation.schema.AlternateTypeRule;
import springfox.documentation.schema.AlternateTypeRuleConvention;

import java.util.List;

import static com.google.common.collect.Lists.newArrayList;
import static springfox.documentation.schema.AlternateTypeRules.newRule;

/**
 * @Classname PageableParamConfig
 * @Description TODO
 * @Date 2020/11/21 22:17
 * @Created by HanYuHao
 */

@Configuration
@SuppressWarnings("SpringJavaAutowiringInspection")
public class PageableParamConfig {
    @Bean
    public AlternateTypeRuleConvention pageableConvention(final TypeResolver resolver) {
        return new AlternateTypeRuleConvention() {
            @Override
            public int getOrder() {
                return Ordered.LOWEST_PRECEDENCE;
            }

            @Override
            public List<AlternateTypeRule> rules() {
                return newArrayList(newRule(resolver.resolve(Pageable.class), resolver.resolve(Page.class)));
            }
        };
    }

    @ApiModel
    @Data
    static class Page {
        @ApiModelProperty(value = "页码(注意从0开始计数)")
        private Integer pageNumber;

        @ApiModelProperty("每页数据数量")
        private Integer pageSize;

//        @ApiModelProperty("数据偏移量")
//        private Long offset;

//        @ApiModelProperty("是否配置分页")
//        private Long paged;

//        @ApiModelProperty("是否按属性排序,格式:属性(,asc|desc)")
//        private List<String> sort;
    }
}


标签: 后端 pageable swagger jpa

发表评论 (已有0条评论)

还木有评论哦,快来抢沙发吧~