分页插件pagehelper使用

2 篇文章 0 订阅
1 篇文章 0 订阅

最近新项目使用springboot+spring+mybatis完成分页使用PageHelper笔记。

1.因为项目是maven进行管理的,所以:第一步就是在pom.xml文件中引入pagehelper分页插件。

<!--mybatis分页插件-->
<dependency>
   <groupId>com.github.pagehelper</groupId>
   <artifactId>pagehelper-spring-boot-starter</artifactId>
   <version>1.2.3</version>
</dependency>

2.项目运行成功 ,调用数据库数据前加一句代码即可实现分页 :PageHelper.startPage(pages, rows)
分页成功后,实际返回的结果list类型是Page<E>,如果想取出分页信息,有两种方法:

需要强制转换为Page<E>,或者使用PageInfo类(下面的例子有介绍)

    @GetMapping("/findMatter/getAll")
    public Map<String, Object> getMatterAll(String pages, String rows) {

        String pageS = pages == null || pages.trim().length() == 0 ? "1":pages;
        String pageSizes = rows == null || rows.trim().length() == 0 ? "10":rows;
        Integer page = Integer.parseInt(pageS);
        Integer pageSize = Integer.parseInt(pageSizes);
        //设置分页的起始码以及页面大小
        Page Pagehelper = PageHelper.startPage(page, pageSize);
        Page list = (Page) matterService.findAll();
        Map<String,Object> map = new HashMap<>();
        map.put("total",list.getTotal());
        map.put("rows",list.getResult());
        return map;
    }

 Page<E>:需要详细了解可以查下每个属性的含义。

public class Page<E> extends ArrayList<E> implements Closeable {
    private static final long serialVersionUID = 1L;
    private int pageNum;
    private int pageSize;
    private int startRow;
    private int endRow;
    private long total;
    private int pages;
    private boolean count;
    private Boolean reasonable;
    private Boolean pageSizeZero;
    private String countColumn;
    private String orderBy;
    private boolean orderByOnly;

方法二:使用PageInfo类

public PageInfo<Matter> getMatterAll(String pages, String rows) {
        String pageS = pages == null || pages.trim().length() == 0 ? "1":pages;
        String pageSizes = rows == null || rows.trim().length() == 0 ? "10":rows;
        Integer page = Integer.parseInt(pageS);
        Integer pageSize = Integer.parseInt(pageSizes);
        //设置分页的起始码以及页面大小
        PageHelper.startPage(page, pageSize);
        List<Matter> docs = matterService.getMatterAll();
        PageInfo<Matter> pageInfo = new PageInfo<>();
        return pageInfo;
    }

pageInfo:需要详细了解可以查下每个属性的含义。 

/**
     * 页码,从1开始
     */
    private int pageNum;
    /**
     * 页面大小
     */
    private int pageSize;
    /**
     * 起始行
     */
    private int startRow;
    /**
     * 末行
     */
    private int endRow;
    /**
     * 总数
     */
    private long total;
    /**
     * 总页数
     */
    private int pages;
    /**
     * 包含count查询
     */
    private boolean count = true;
    /**
     * count信号,3种情况,null的时候执行默认BoundSql,true的时候执行count,false执行分页
     */
    private Boolean countSignal;
    /**
     * 排序
     */
    private String orderBy;
    /**
     * 只增加排序
     */
    private boolean orderByOnly;
    /**
     * 分页合理化
     */
    private Boolean reasonable;
    /**
     * 当设置为true的时候,如果pagesize设置为0(或RowBounds的limit=0),就不执行分页,返回全部结果
     */
    private Boolean pageSizeZero;

注意:PageHelper只对紧跟着的第一个SQL语句起作用

//获取第1页,10条内容,默认查询总数count
    PageHelper.startPage(1, 10);
 
    //紧跟着的第一个select方法会被分页
    List<Country> list = countryMapper.selectIf(1);
 
    //后面的不会被分页,除非再次调用PageHelper.startPage
    List<Country> list2 = countryMapper.selectIf(null);
    //list1
    assertEquals(2, list.get(0).getId());
    assertEquals(10, list.size());
    //分页时,实际返回的结果list类型是Page<E>,如果想取出分页信息,需要强制转换为Page<E>,
    //或者使用PageInfo类(下面的例子有介绍)
    assertEquals(182, ((Page) list).getTotal());
    //list2
    assertEquals(1, list2.get(0).getId());
    assertEquals(182, list2.size());

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值