Springboot使用PageHelper对数据进行分页实践

2021-01-28  本文已影响0人  一块自由的砖

背景

项目中使用的是Mybatis没有使用jpa,而前端和app端都有懒加载,下拉刷新的请求,需要对查询的数据进行分页查询。原有的mybatis都已经正常使用,现在只需要增加PageHelper来对查询的数据进行分页。

环境

Java 1.8
springboot 2.2.6
mybatis-spring-boot-starter 1.3.2
...
新增
pagehelper-spring-boot-starter 1.2.3

Maven配置

增加tk mapper需要用到的依赖包

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

实践

第一步:增加pagehelper的配置文件
配置文件新增

##################################################
##
## 分页配置
##
##################################################
pagehelper:
  helperDialect: mysql
  supportMethodsArguments: true

helperDialect使用数据库的语义
supportMethodsArguments支持pageNum,pageSize分页参数,自动分页。

第二步:源码中使用
在查询中使用 PageHelper.startPage(page, pageSize),实际分页后,分页的数据也需要组织,分页数据类,在网上也找到了一个比较好的类。参看后面的代码
查询实现代码:

 @Transactional(propagation = Propagation.SUPPORTS)
    @Override
    public PagedGridResult queryPageComments(Integer itemId, Integer level,
                                                   Integer page, Integer pageSize)
    {
        Map<String, Object> map = new HashMap<>();
        map.put("itemId", itemId);
        map.put("level", level);

        PageHelper.startPage(page, pageSize);

        List<ItemCommentVO> itemCommentVOList = itemsMapper.selectItemComments(map);

        for(ItemCommentVO vo : itemCommentVOList){
            vo.setNickname(DesensitizationUtils.chineseName(vo.getNickname()));
        }

        return setterPagedGrid(itemCommentVOList, page);
    }

    /**
     * 分页处理函数
     */
    private PagedGridResult setterPagedGrid(List<?> list, Integer page)
    {
        PageInfo<?> pageList = new PageInfo<>(list);
        PagedGridResult gridResult = new PagedGridResult();
        gridResult.setPage(page);
        gridResult.setRows(list);
        gridResult.setTotal(pageList.getPages());
        gridResult.setRecords(pageList.getTotal());

        return gridResult;
    }

分页数据格式化类:

package com.springboot.b2c.utils;

import java.util.List;

/**
 *分页Grid数据对象
 */
public class PagedGridResult {
    //当前页数
    private Integer page;
    //总页数
    private Integer total;
    //总记录数
    private Long records;
    //每行显示内容
    private List<?> rows;

    public Integer getPage() {
        return page;
    }

    public void setPage(Integer page) {
        this.page = page;
    }

    public Integer getTotal() {
        return total;
    }

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

    public Long getRecords() {
        return records;
    }

    public void setRecords(Long records) {
        this.records = records;
    }

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

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

上一篇下一篇

猜你喜欢

热点阅读