• 寻找写代码感觉(十一)之使用PageHelper实现后端分页


    一、PageHelper是什么?

    是一个插件,可以控制接口显示数据,其原理就是Mybatis拦截器,拦截到SQL后,增加limit关键字,实现对查询结果的控制。

    二、如何使用

    1、在pom中加上依赖

    <!-- pagehelper 插件-->
    <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper-spring-boot-starter</artifactId>
        <version>1.2.13</version>
    </dependency>
    
    

    2、修改Service层中代码

    使用PageHelper进行分页设置,示例代码如下:

    package com.rongrong.wiki.service;
    
    import com.github.pagehelper.PageHelper;
    import com.github.pagehelper.PageInfo;
    import com.rongrong.wiki.domain.EBook;
    import com.rongrong.wiki.domain.EBookExample;
    import com.rongrong.wiki.mapper.EBookMapper;
    import com.rongrong.wiki.req.EBookReq;
    import com.rongrong.wiki.resp.EBookResp;
    import org.springframework.stereotype.Service;
    import org.springframework.util.ObjectUtils;
    
    import javax.annotation.Resource;
    import java.util.List;
    
    import static com.rongrong.wiki.util.CopyUtil.copyList;
    
    /**
     * @author rongrong
     * @version 1.0
     * @description
     * @date 2021/10/13 23:09
     */
    @Service
    public class EBookService {
    
        @Resource
        private EBookMapper eBookMapper;
    
        public List<EBookResp> list(EBookReq eBookReq) {
            EBookExample eBookExample = new EBookExample();
            //此处代码的意思相当于,搞了一个Sql的where条件
            EBookExample.Criteria criteria = eBookExample.createCriteria();
            //划波浪线为不推荐使用,这里我们去看源代码做个替换即可
            if (!ObjectUtils.isEmpty(eBookReq.getName())) {
                criteria.andNameLike("%" + eBookReq.getName() + "%");
            }
            //控制请求后,每页显显示3条数据
            PageHelper.startPage(1,3);
            List<EBook> eBookList = eBookMapper.selectByExample(eBookExample);
            PageInfo<EBook> pageInfo = new PageInfo(eBookList);
            System.out.println(pageInfo.getTotal());
            System.out.println(pageInfo.getPages());
            //List<EBookResp> eBookRespList = new ArrayList<>();
            //for (EBook eBook: eBookList) {
            //    //EBookResp eBookResp = new EBookResp();
            //    ////spring boot 自带的BeanUtils完成对象的拷贝
            //    //BeanUtils.copyProperties(eBook, eBookResp);
            //    //eBookResp.setId(12345L);
            //    //单体复制
            //    EBookResp copy = copy(eBook, EBookResp.class);
            //    eBookRespList.add(copy);
            //}
            //列表复制
            List<EBookResp> respList = copyList(eBookList, EBookResp.class);
            return respList;
        }
    }
    
    

    3、修改后调用显示

    控制台显示:

    前端页面显示:

    个人感觉还是比较简单的,而且使用方便。

    优秀不够,你是否无可替代

    软件测试交流QQ群:721256703,期待你的加入!!

    欢迎关注我的微信公众号:软件测试君


  • 相关阅读:
    对dedecms、php168,phpcms、VeryCMS、DiyPage五款开源整站系统的简单评点(
    [转+总结]Linux虚拟系统安装VMware Tools总结
    VMware虚拟机的联网(图)
    自己动手架设linux下Web服务器(图)4
    免费三个月的美国vps:JUMPLINE,速度不错
    中文 CentOS 攻略
    linux不能上网如何配置
    格式化字符串
    gitlab在push代码的时候报错
    运行ntpdate报错:Temporary failure in name resolution
  • 原文地址:https://www.cnblogs.com/longronglang/p/15553025.html
Copyright © 2020-2023  润新知