【Java】pageHelper实现分页

如果你也在用 MyBatis,建议尝试该分页插件,这一定是最方便使用的分页插件。分页插件支持任何复杂的单表、多表分页。——PageHelper官网。

后端实现

com.github.pagehelper pagehelper 5.1.11

在MyBatis配置文件中添加插件

使用PageHelper需要在MyBatis的全局配置文件中加入如下配置,其中数据库的方言需要根据使用数据库的情况自行配置。




	
		
		
			
			
		
	

创建PageResult类

使用分页时,往往会向前端传递总页数以及每页的内容,即total和List。鉴于在程序中我们会大量使用分页,所以实现分页的第一步就是创建一个PageResult类。

此类中包含total、rows两个属性。由于该类中的rows不代指任一类型,所以无法指定泛型。

如果要使用dubbo等RPC技术请务必实现Serializable接口。

package entity;

import java.io.Serializable;
import java.util.List;

/**
 * Created by [email protected] Luna on 2020/4/13 0:44
 */
public class PageResult implements Serializable {
    //总记录数
    private Long total;
    //当前页内容
    private List rows;

    public Long getTotal() {
        return total;
    }

    public void setTotal(Long total) {
        this.total = total;
    }

    public List getRows() {
        return rows;
    }

    public void setRows(List rows) {
        this.rows = rows;
    }

    public PageResult(Long total, List rows) {
        this.total = total;
        this.rows = rows;
    }

    public PageResult() {
    }
}

编写代码

首先编写Controlelr层代码

  • 先创建一个findPage()方法,接收前端传递的需要查询的页码(PageNo)和每页数据的条目(PageSize)。
    @RequestMapping("/findPage")
    public PageResult findPage(Integer pageNo,Integer pageSize){
        return brandService.findPage(pageNo,pageSize);
    }

在Service层也非常简单

  • 直接在查询所有的语句的上一行加上PageHelper.startPage(pageNo,pageSize);就可以实现分页查询。
  • 在查询所有时,需要将返回结果强转为Page对象。
      @Override
    public PageResult findPage(Integer pageNo, Integer pageSize) {
        //开启分页
        PageHelper.startPage(pageNo,pageSize);
        //查询数据
        Page page = (Page) userMapper.selectByExample(null);
        //返回结果
        return new PageResult(page.getTotal(),page.getResult());
    }

测试

此时,直接在前端调用localhost:8080/user/findPage?pageNo=1&pageSize=5即可获取第一页的五条数据。

你可能感兴趣的:(mybatis)