PageHelper不使用startPage 默认分页的问题
问题说明
使用Mybatis框架和PageHelper时,并没有使用PageHelper.startPage(1,10)的语句,但是sql 默认被分页了
场景重现
class BaseQueryVo{
private Integer pageNum =1;
private Integer pageSize =10;
}
class MyQueryVo extend BaseQueryVo{
String params;
//getter
//setter
}
class MyService{
private final QueryMapper queryMapper;
List<String> queryList(MyQueryVo queryVo){
queryMapper.queryList(queryVo);
// 此处返回的是Page对象,默认已经被Mybatis 分页了
}
}
问题说明
MyQueryVo 默认继承了BaseQueryVo BaseQueryVo 默认给分页的参数赋值1和10,而且queryMapper 查询默认传的是MyQueryVo ,导致PageHelper 解析时默认解析到pageNum和pageSize 参数,直接拦截到参数,默认加上 了分页,也就是说所有存在PageHelper插件的应用中,查询参数中带着pageNum和pageSize 时,且该查询参数在mapper层查询的参数中有值时,都会被默认分页
解决办法
1、 修改参数名pageNum => pageNo
2、查询参数把pageNum和pageSize 设置为null