美文网首页
Springboot使用PageHelper对数据进行分页实践

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

作者: 一块自由的砖 | 来源:发表于2021-01-28 16:05 被阅读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;
        }
    }
    
    

    相关文章

      网友评论

          本文标题:Springboot使用PageHelper对数据进行分页实践

          本文链接:https://www.haomeiwen.com/subject/rhfxtltx.html