Springboot项目PageHelper升级到5.3.2版本分页查询失效
线上问题排查
背景:现象是gateway网关报错 FluxOnAssembly$OnAssemblyException
,经过排查,发现是分页查询时返回了2000多条数据,导致数据量超出了网关限制,从而抛错。也就是pageHelper分页查询未生效。
原因:pageHelper 升级到5.3.2版本后配置方式有改变
-
低版本的配置方式如下
-
@Configuration public class PageHelperConfig { @Bean public PageHelper pageHelper() { PageHelper pageHelper = new PageHelper(); Properties properties = new Properties(); properties.setProperty("offsetAsPageNum", "true"); properties.setProperty("rowBoundsWithCount", "true"); properties.setProperty("reasonable", "true"); //配置mysql数据库的方言 properties.setProperty("dialect", "mysql"); pageHelper.setProperties(properties); return pageHelper; } }
解决方法:
-
将PageHelper改为通过PageInterceptor注册
-
@Configuration public class PageHelperConfig { @Bean public PageInterceptor pageInterceptor(){ PageInterceptor pageInterceptor = new PageInterceptor(); Properties properties = new Properties(); properties.setProperty("offsetAsPageNum", "true"); properties.setProperty("rowBoundsWithCount", "true"); properties.setProperty("reasonable", "true"); //配置mysql数据库的方言 properties.setProperty("helperDialect", "mysql"); pageInterceptor.setProperties(properties); return pageInterceptor; } }