若依框架使用startPage自动分页的坑

在使用若依进行分页时,一般会使用若依自己封装的PageHelper的分页方法
若依框架进行分页的步骤如下
(1) 在自己的controller里面继承他的BaseController
(2)在要分页的业务前面加上 startPage()
(3) 在返回数据前加上 getDataTable(list) list表示数据库查出来的数据
例子如下 :
image

注意分页参数要用若依规定的参数 Integer pageNum,Integer pageSize

使用这种方法进行分页有一个隐藏的bug点
就是在我么来的业务代码里面有多次查询数据库的操作时,会默认把第一次的查询进行分页操作,这样会造成一些想不到bug 于是在有多次操作数据库的业务逻辑里面,一般自己写分页的方法
具体步骤如下:
(1) 接收参数的时候把分页参数带上
如下图所示
image
(2)在业务代码需要分页的地方构建分页方法.若依使用的是PageHelper 代码如下:
if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)) {
PageHelper.startPage(pageNum, pageSize);
}
image

(3) 在Controller层返回数据的时候进行分页的构建
image

若依分页的tatal异常,total一直为前端传入的分页参数的pageSize
解决方案:
不能在数据库查询后再做bean属性的转换 image

不论是若依自带的BeanUtils.copyBeanProp(); 还是用mapstruct 都会造成分页异常

posted @ 2021-09-26 19:42  小猫爱哭鬼  阅读(20174)  评论(2编辑  收藏  举报