Spring Boot自定义分页参数

时间:2017-06-14 07:29:23

标签: java spring hibernate spring-mvc spring-data-jpa

您好我试图覆盖Spring JPA中页面大小的默认参数名称,以匹配需要使用的Kendo UI网格

http://localhost:8080/retailers/all?page=1&pageSize=5

JPA正在制作

http://localhost:8080/retailers/all?page=1&size=5

我尝试过添加

spring.data.rest.page-param-name=page
spring.data.rest.limitParamName=pageSize

应用程序属性,但它似乎对项目没有任何影响。

我的控制器看起来像这样

@RequestMapping(method = RequestMethod.GET, value = "retailers/all")
public ResponseEntity<Page<RetailerEntity>> retailers(Pageable pageable){
    Page<RetailerEntity> retailers = retailerService.getAllRetailers(pageable);
    return new ResponseEntity<>(retailers, HttpStatus.OK);  
}

并且存储库正在使用开箱即用的实现

public interface RetailerRepository extends PagingAndSortingRepository<RetailerEntity, Integer> {

}

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

此问题可能与spring boot版本有关。 更改application.properties仅适用于Spring Boot 1.2+。 如果您使用的是1.1或更早版本,则有两种选择:

1)使用RepositoryRestConfigurer的自定义实现创建RepositoryRestConfigurerAdapter bean。

@Configuration
class CustomRestMvcConfiguration {

  @Bean
  public RepositoryRestConfigurer repositoryRestConfigurer() {

    return new RepositoryRestConfigurerAdapter() {

      @Override
      public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
        config.setBasePath("/api");
      }
    };
  }
}

2)使用自定义实现RepositoryRestConfigurer创建一个组件。

@Component
public class CustomizedRestMvcConfiguration extends RepositoryRestConfigurerAdapter {

  @Override
  public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
    config.setBasePath("/api");
  }
}

这些示例适用于basePath属性,您可以以相同的方式更改所有其他属性。 您可以查看更多详细信息:the documentation