项目场景:
我将一个使用mybatisPlus的自带的分页查询改成一个自定义的包含表关联的查询时,分页突然失效了。我很清楚这不是第一次在这个项目中遇到这个问题了。上一次遇到,然后解决后还感觉没什么,结果这次又遇到,却回忆不起来是什么原因,等后来终于又回想起来,我决定必须记录一下了。
问题描述
// service层方法参数传递如下,看起来是一个非常规范的分页查询方法
public IPage<TempBo> queryPageByConditions(Page<TempBo> page, TempParam param) {
return TempMapper.queryPageByConditions(page, param);
}
原因分析:
刚开始百度后大部分答案都是说mybatisPlus没有配置好分页拦截器,我检查了自己项目中的配置,发现没有问题。然后仔细分析这个分页参数是不是又什么问题,又打断点检查参数的接收和传递。就这样一步一步…… 直到我点开了这个参数实体类,我又恍然大悟了(因为之前遇到过),原因是这个参数实体类继承了mybatisPlus的Page类。
因为这个代码也是前同事留下的作品,所以这个继承操作弄得我也是无力吐槽……两次。
解决方案:
// 就是这个参数实体类继承了mybatisPlus的Page类,作用应该就是为了接收size和current参数。
// 去掉继承,把需要的参数添加到tempParam类中就可以了
public class TempParam extends Page {}