MyBatis篇(五)分页工具PageHelper

MyBatis篇-分页工具PageHelper

Web开发涉及到表格时,就会有分页的需求。

分页方法有两种:

  1. 前端分页

    后端查询全部数据返回给前端,前端分页显示部分数据。

  2. 后端分页

    前端仅请求某一页数据,后端根据页码和页尺寸查询当前页数据返回给前端。

对于数据量少的业务,前端分页更合适,换页速度快。

对于数据量多的业务,前端分页就不合适了,一次请求大量数据会对前端造成很大负担。此时就需要后端分页功能。

后端分页自己写一是过于麻烦,需要查询的分页参数过多,二是过多地入侵Mapper层代码。

PageHelper插件对分页功能进行了封装。底层属于物理分页,参考了一篇文章写的:

其实一开始看到这段代码时候,我觉得应该是内存分页。其实插件对mybatis执行流程进行了增强,添加了limit以及count查询,属于物理分页。

Mybatis分页插件PageHelper简单使用

1. Maven引用分页插件


<dependency>
    <groupId>com.github.pagehelpergroupId>
    <artifactId>pagehelperartifactId>
    <version>5.1.10version>
dependency>

2. 配置拦截器

在sqlSessionFactory配置

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  
  <property name="plugins">
    <array>
      <bean class="com.github.pagehelper.PageInterceptor">
        <property name="properties">
          
          <value>
            
            helperDialect=mysql
          value>
        property>
      bean>
    array>
  property>
bean>

3. 快速使用

true表示需要统计总数,这样会多进行一次请求select count(0); 省略掉true参数只返回分页数据。

UserService.java

/**
     * 分页查询所有用户
     * @param pageNum
     * @param pageSize
     * @return
     */
    public PageInfo<User> findUserByPage(Integer pageNum, Integer pageSize) {
     
        PageHelper.startPage(pageNum, pageSize);
        List<User> users = userDao.findAll(); //startPage后紧跟Mybatis查询方法,保证线程安全。
        PageInfo pageInfo = new PageInfo(users);
        return pageInfo;
    }

Test.java

@Autowired
UserService userService;
@Test
public void test01() {
     
    PageInfo<User> userPageInfo = userService.findUserByPage(2, 5);
    System.out.println(userPageInfo);

    int pages = userPageInfo.getPages();//总页数
    int pageNum = userPageInfo.getPageNum();//当前页码
    int pageSize = userPageInfo.getPageSize();//每页大小
    int size = userPageInfo.getSize();//实际查询记录数
    long total = userPageInfo.getTotal();//总记录数
    List<User> users = userPageInfo.getList(); //数据部分
}

剩下的工作,就是将该对象返回给前端。作为JSON返回也好,放入response里返回也好。交给前端后根据不同的前端框架去解析即可。

你可能感兴趣的:(Mybatis,Mybatis,PageHelper)