当前位置: 首页 > 后端技术 > Java

springdatajpa分页下标改成1不起作用排查

时间:2023-04-02 10:04:57 Java

使用springdatajpa查询数据分页,默认springpagination下标分页从0开始,前端对接一般从1页开始,其中有Configurespring.data.web.pageable.one-indexed-parameters,默认为false,即从下标0开始,改为true从1开始。但是改了之后就不行了。经查,问题记录如下:VersionSpringbootversion-2.6.4原因是使用了@EnableSpringDataWebSupport注解,默认会加载SpringDataWebConfiguration.class配置类的配置,里面定义了一个bean@BeanpublicPageableHandlerMethodArgumentResolverpageableResolver(){PageableHandlerMethodArgumentResolverpageableResolver=newPageableHandlerMethodArgumentResolver(sortResolver.get());customizePageableResolver(pageableResolver);returnpageableResolver;}而上面的spring.data.web.pageable.one-indexed-parameter自动注入配置是@Bean@ConditionalOnMissingBean.properties.getPageable();.getSizeParameter());resolver.setOneIndexedParameters(pageable.isOneIndexedParameters());resolver.setPrefix(可分页.getPrefix());resolver.setQualifierDelimiter(pageable.getQualifierDelimiter());resolver.setFallbackPageable(PageRequest.of(0,pageable.getDefaultPageSize()));resolver.setMaxPageSize(pageable.getMaxPageSize());};}然后SpringDataWebAutoConfiguration.class在自动配置类上有一个@ConditionalOnMissingBean(PageableHandlerMethodArgumentResolver.class)。如果这个bean存在,则不会自动加载,而且这个bean定义在SpringDataWebConfiguration类中,形成冲突解决办法就是自己定义一个config,其中在定义一个PageableHandlerMethodArgumentResolverCustomizer的bean@Configuration@EnableConfigurationProperties(SpringDataWebProperties.class)publicclassConfig{@Bean@ConditionalOnMissingBeanpublicPageableHandlerMethodArgumentResolverCustomizerpageableCustomizer(SpringDataWebPropertiesproperties){return(resolver)->{Pageablepageable=properties.getPageable();resolver.setPageParameterName(pageable.getPageParameter());resolver.setSizeParameterName(pageable.getSizeParameter());resolver.setOneIndexedParameters(pageable.isOneIndexedParameters());resolver.setPrefix(pageable.getPrefix());resolver.setQualifierDelimiter(pageable.getQualifierDelimiter());resolver.setFallbackPageable(PageRequest.of(0,pageable.getDefaultPageSize()));resolver.setMaxPageSize(pageable.getMaxPageSize());};}}

最新推荐
猜你喜欢