您的位置:

Pageresult详解

Pageresult作为一种常用的分页插件,具有使用方便、功能强大等特点,在实际开发中得到广泛应用。本文将从多个方面详解Pageresult的使用,涵盖Pageresult用法、Pageresult和PageHelper、Pageresult取出、Pageresult 的返回值怎么填等方面。

一、Pageresult用法

Pageresult是一款基于mybatis和springmvc的分页插件,便于在应用程序中使用分页,使开发者无需编写繁琐的分页代码。首先,我们需要在POM文件中添加Pageresult的依赖:

<dependency>
  <groupId>com.github.pagehelper</groupId>
  <artifactId>pagehelper-spring-boot-starter</artifactId>
  <version>最新版本</version>
</dependency>

然后在Mapper.xml中添加分页插件配置:

<plugins>
  <plugin interceptor="com.github.pagehelper.PageInterceptor">
    <!--这里的属性通过set方法注入-->
    <property name="helperDialect" value="mysql"/>
    <property name="reasonable" value="true"/>
    <property name="supportMethodsArguments" value="true"/>
    <property name="params" value="pageNum=pageNumKey;pageSize=pageSizeKey;"/>
  </plugin>
</plugins>

在进行分页查询时,需要在service层中使用PageHelper.startPage方法启用分页,如:

PageHelper.startPage(pageNum,pageSize);
List<User> userList = userDao.getUserList();
return new Pageresult<>(userList);

其中,pageNum为页码,pageSize为每页记录数,userDao为自动装配的UserDao,getUserList为查询数据的方法名。

二、Pageresult和PageHelper

Pageresult是基于PageHelper的分页插件,两者都提供了分页的功能。但是,Pageresult可以返回更多的分页信息,如总页数、总记录数、当前页码等。

而且,PageHelper需要手动在Mapper.xml中编写自定义查询语句,而Pageresult则可以直接应用于查询方法中,避免了重复编写分页代码的烦恼。

三、Pageresult取出

Pageresult取出数据可以使用List方法获取当前页的数据,示例如下:

Pageresult<> pageresult = new Pageresult<>(userList);
List<User> listCurrentUser = pageresult.getList();

此外,Pageresult还具有很多其他方法,如getPageNum(获取当前页码)、getPageSize(获取每页记录数)、getTotal(获取总记录数)等等,可以帮助开发者更方便地使用分页。

四、Pageresult 的返回值怎么填

Pageresult 可以作为Mybatis的查询方法的返回值类型,表示返回的结果是T型数据的分页。Mybatis查询方法示例如下:

public interface UserDao {
  List<User> getUserList();
}

将该方法修改为返回Pageresult,示例如下:

public interface UserDao {
  Pageresult<User> getUserList();
}

此时,在service层中,需要使用Pageresult进行处理:

PageHelper.startPage(pageNum,pageSize);
Pageresult<User> pageresult = userDao.getUserList();
return pageresult;

这样,开发者就可以方便地获取分页相关的信息,进行分页处理。

五、Pageresult在前端页面的展示

Pageresult返回的分页信息可以方便地用于前端页面的展示。常见的展示方式有两种:

1、使用分页插件展示,如jQuery中的pagination分页插件:

$(document).ready(function () {
  $("#pagination").pagination({
    pageSize: pageSize,              
    total: total,                     
    pageCount: totalPages,
    current: pageNum,                     
    prevCls: 'prev',
    nextCls: 'next',
    activeCls: 'active',
    layout: ['prev', 'page', 'next', 'limit', 'refresh', 'skip'],
    callback: function (pageNum) {        
      $("#loading").show();
      $("#content").html('');
      $.post('xxx/user/list', {
        pageNum: pageNum,
        pageSize: pageSize
      }, function (result) {              
        $("#loading").hide();
        $.each(result.data, function (index, item) {
          var tr = "<tr><td>" + item.id + "</td><td>" + item.name + "</td></tr>";
          $("#content").append(tr);
        });
      });
    }
  });
});

2、使用手写分页展示,例如在页面上展示页码和当前页码:

<div>
  <% if(currentPage>=1) {%>
  <a href="/user/list?pageNum=1">First</a>
  <% } %>
  <% if(currentPage>1) {%>
  <a href="/user/list?pageNum=<%=currentPage-1%>">Prev</a>
  <% } %>
  <% if(currentPage<totalPages) {%>
  <a href="/user/list?pageNum=<%=currentPage+1%>">Next</a>
  <% } %>
  <% if(currentPage<totalPages) {%>
  <a href="/user/list?pageNum=<%=totalPages%>">Last</a>
  <% } %>
</div>

六、总结

Pageresult作为一款方便、易用的分页插件,不仅可以提供分页功能,还可以返回更多的分页信息,方便开发者进行分页处理。在实际项目中,可以结合jQuery等前端插件,实现更好的分页效果。