记PageHelper的自动添加分页的问题

公司系统中使用PageHelper做分页插件,最近在做一个excel导出功能,excel导出是不需要分页的,但很奇怪每次mybatis都会自动帮忙分页,后来终于找到问题的原因了,这里记录下整个过程,以备那些还不是特别熟悉PageHelper的同学参考。

  //正常的分页
public Page userPageList(QueryUserVo userVo){
    Page result = PageHelper.startPage(userVo.getPageNum(),userVo.getPageSize());
    userMapper.selectList(userVo);
  return result;
}
//无需分页
public Page userList(QueryUserVo userVo){
  return userMapper.selectList(userVo);
}

public class QueryUserVo {
  private String name;
  private int pageNum = 1;//默认起始页
  private int pageSize= 10;//默认10条
}

# PageHelper 分页插件配置
pagehelper.helperDialect=mysql
pagehelper.reasonable=false
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql

上面就是出现自动加分页的配置,当调用userList时应该不分页但每次都分页10条,我debug跟踪原来是分页插件配置中supportMethodsArguments配成了true,为true的情况下,PageHelper会分析传入的对象(QueryUserVo ),自动帮用户分析是否要进行分页。


记PageHelper的自动添加分页的问题_第1张图片

记PageHelper的自动添加分页的问题_第2张图片
PageObjectUtil.getPageFromObject

问题就在supportMethodsArguments这个参数,默认是false,因为我们也不太清楚该参数的含义,就给设置为了true。这里可通过两种方式解决这个问题,第一种删除supportMethodsArguments配置(不启用),这样分页的方法中必须调用PageHelper.startPage方法,第二种不要给pageNum和pageSize设置默认值或者变量名不要为这两个,这样PageHelper解析出来的值为空就不会进行分页。推荐第一种,因为第二种分页隐藏的比较深,不熟悉的人就很难找出问题点。

你可能感兴趣的:(记PageHelper的自动添加分页的问题)