您的位置:

PageHelper获取总条数详解

一、从多个方面阐述PageHelper获取总条数

PageHelper是一款用于MyBatis分页插件的工具库,对于分页操作提供了十分便捷的支持。获取总条数是分页操作的一项关键步骤,下面将从多个方面详细介绍PageHelper获取总条数:

二、PageHelper获取总条数失效

在使用PageHelper进行分页操作时,如果获取总条数失效,通常是由于以下几个原因:

1、SQL语句没有进行正确的处理,需要在SQL语句中加入pagehelper自定义的注释,这个注释中加入Count 属性,如下所示:

    SELECT title, content, created_at FROM article WHERE id > 0
    <!-- 在这里加入pagehelper注释,count属性用于分页计数 -->

2、Dao层当中没有调用PageHelper.startPage() 方法来启用分页插件,代码示例如下:

public List
  
findByPage(int pageNum, int pageSize) { PageHelper.startPage(pageNum, pageSize); return articleMapper.selectByExample(new ArticleExample()); }

3、调用Dao层方法时没有传入PageInfo 类型的参数,示例如下:

public PageInfo
  
findByPage(int pageNum, int pageSize) { PageHelper.startPage(pageNum, pageSize); List
list = articleMapper.selectByExample(new ArticleExample()); return new PageInfo<>(list); }

三、PageHelper获取总条数

PageHelper获取总条数的方式也有多种,下面将针对其中的两种方式进行详细介绍:

1、使用PageInfo获取总条数:

    PageInfo
  
pageInfo = new PageInfo<>(list); long total = pageInfo.getTotal();

2、使用PageInterceptor获取总条数:

    Page page = (Page) list;
    long total = page.getTotal();

四、PageHelper获取总条数效率很低

在对大量数据进行分页操作时,PageHelper获取总条数的效率会受到很大的影响,导致页面加载速度缓慢。为此,可以考虑以下两种优化方式:

1、使用count语句获取总条数:

    PageHelperHelper.offsetPage(pageNum, pageSize, false);
    long total = articleMapper.countByExample(new ArticleExample());
    List
  
list = articleMapper.selectByExample(new ArticleExample()); PageInfo
pageInfo = new PageInfo<>(list); pageInfo.setTotal(total);

2、使用静态变量缓存总条数:

    private static Long total = null;
    public List
  
findByPage(int pageNum, int pageSize) { if (total == null) { total = articleMapper.countByExample(new ArticleExample()); } PageHelper.startPage(pageNum, pageSize); List
list = articleMapper.selectByExample(new ArticleExample()); PageInfo
pageInfo = new PageInfo<>(list); pageInfo.setTotal(total); return list; }

五、PageHelper查询总条数选取

在使用PageHelper获取总条数的过程中,会出现一些问题。因此在使用PageHelper进行分页操作时,可以选用以下几种获取总条数的方式:

1、使用PageInfo获取总条数

2、使用PageInterceptor获取总条数

3、使用count语句获取总条数

4、使用静态变量缓存总条数

综上所述,通过本文的介绍,读者可以更加深入地了解PageHelper获取总条数的具体过程。同时,本文也为读者提供了多种优化方式,帮助读者解决分页操作中总条数获取效率低的问题。