Mybatis分页插件使用的详解

前言

关于分页,一般来说rowBounds 这种假分页都上不了台面,我们往往都选哟真分页,那么还不想搞得很麻烦,Mybatis的分页插件就为后端程序员解决了这个问题

例子

首先需要导入依赖, 没错pagehelper

    <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>5.2.0</version>
    </dependency>

看看怎么用,首先我们不要条件,直接分
当然了我喜欢自己事先写一个page的实体类👇

public class page<T> {
    private int pageNumber;
    private int pageSize;
    private int total;
    private List<T> rows;

    private int pageCount;
        private int pre;
        private int next;
        private int start; //limit ?,?
        private boolean first;
        private boolean last;

    public int getPageCount() {
        return (getTotal()+getPageSize()-1)/getPageSize();
    }

    public int getPre() {
        if(getPageNumber()==1)
        return 1;
        return getPageNumber()-1;
    }

    public int getNext() {
        if(getPageNumber()==getPageCount())
        return getPageCount();
        return getPageNumber()+1;
    }

    public int getStart() {
        return (getPageNumber()-1)*pageSize;
    }


    public boolean isFirst() {
        return getPageNumber()==1;
    }

    public boolean isLast() {
        return getPageNumber()==getPageCount();
    }

    public int getPageNumber() {
        return pageNumber;
    }

    public void setPageNumber(int pageNumber) {
        this.pageNumber = pageNumber;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public int getTotal() {
        return total;
    }

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

    public List<T> getRows() {
        return rows;
    }

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

Controller👇

    @RequestMapping(value = "/querySome", method = RequestMethod.POST)
    @ResponseBody
    public ETResponse querySome(int pageNumber, int pageSize) {
        List<Food> rows = service.querySome(pageNumber, pageSize);
        PageInfo<Food> info = new PageInfo<>(rows);//Pageinfo 是个Mybatis写的page
        page<Food> pa = new page<>();
        pa.setRows(info.getList());
        pa.setTotal(Integer.parseInt(info.getTotal() + ""));
        pa.setPageSize(pageSize);
        pa.setPageNumber(pageNumber);
        return sr.setResponse(pa,"200");
    }

流程就是

查出结果集
创建Pageinfo的对象
组装我们自己的page对象
发送page

当然了,有没有简化版?这我还得自己建个类,
Controller

    @RequestMapping(value = "/querySome", method = RequestMethod.POST)
    @ResponseBody
    public ETResponse querySome(int pageNumber, int pageSize) {
        List<Food> rows = service.querySome(pageNumber, pageSize);
        PageInfo<Food> info = new PageInfo<>(rows);//Pageinfo 是个Mybatis写的page
        return sr.setResponse(info,"200");//负责向前台发送response.data.data的方法
    }

是的没错,直接把pageinfo的对象传给前台也不是不行,因为它本身就是一个page对象,只是它里面的一些属性我们不是很清楚,
下面是pageInfo源码中的属性

private int pageNum;
    private int pageSize;
    private int size;
    private long startRow;
    private long endRow;
    private int pages;
    private int prePage;
    private int nextPage;
    private boolean isFirstPage;
    private boolean isLastPage;
    private boolean hasPreviousPage;
    private boolean hasNextPage;
    private int navigatePages;
    private int[] navigatepageNums;
    private int navigateFirstPage;
    private int navigateLastPage;

我们发现好像没有我们的要的list结果集
我找了找在它父类中呢
在这里插入图片描述
在这里插入图片描述
很明显了吧,所以以后需要什么属性直接get也好
ok说了这么多,看看Service

 public List<Food> querySome(int pageNumber, int pageSize) {
        PageHelper.startPage(pageNumber,pageSize);//负责分页
        return dao.querySome();//传空参给dao层
    }

Dao层+mapper.xml文件

 List<Food> querySome();
 <select id="querySome" resultType="food">
	select * from food
 </select>

那有条件查询的分页呢?
很简单我们只需要在Service中把条件给dao层就ok了

 public List<Food> querySome(String name,int pageNumber, int pageSize) {
        PageHelper.startPage(pageNumber,pageSize);//负责分页
        return dao.querySome(name);//传空参给dao层
   }
 List<Food> querySome(String name);
 <select id="querySome" resultType="food">
	select * from food where name =#{name}
 </select>

总结

ok了MyBatis的分页插件学会了的话,记得给个赞哦~

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

商朝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值