新手入门之增删改分页查询(雪花ID)

本文介绍了如何在SpringBoot项目中使用PageHelper进行分页查询,包括创建PageReq和PageResp类,处理请求参数验证,以及利用SnowFlake算法生成唯一ID。同时,文章强调了数据安全性和参数校验的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

外话:上次博文因为一个可恶的bug鸽了,直接开摆三天,看到粉丝竟然到了66这么一个吉利的数字,激情开更。

尽量每步代码都详尽,请放心食用。

接上篇(http://t.csdnimg.cn/Y8T26),带大家实现了基本查询,我们依旧使用ebook这张表实现增删改分页查询的功能

分页查询

这是一个非常常见的需求,我们随便打开一个页面基本都有页码,我们可以进行翻页的动作。

我们拿到100条数据,每页10条,分成10页。可以看到这句话有三个数据,总条数,页数和每页条数,我们知道总条数和每页条数就可以知道页数,可是还有一个问题,我们怎么知道我们处于第几页?所以页数不重要,当前页码反而重要。

我们分页查询只需要前端传来两个参数当前页码和每页条数,就可以查出当前页的数据,我们思考可能多个页面都要分页的需求,那么我们就可以将这个分页类作为其他参数请求类的父类

分页类源码如下

public class PageReq {
   
    private int page;
   
    private int size;

    public int getPage() {
        return page;
    }

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

    public int getSize() {
        return size;
    }

    public void setSize(int size) {
        this.size = size;
    }

    @Override
    public String toString() {
        return "PageReq{" +
                "page=" + page +
                ", size=" + size +
                '}';
    }
}

我们让EbookQueryReq(上篇博客的EbookReq改了名字)继承它,相等于我们现在的请求参数加了两个,页码和每页条数。我们只需要在Service层稍加改变。我们在Pom文件引入PageHelper依赖

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

只要我们向PageHelper的startPage提供两个参数(页码和每页条数),PageHelper会自动帮我们完成分页功能。页码最小为1,PageHelper还内置了一个PageInfo类,能够得到总条数和总页数。

//分页从1开始,只对下面第一个查询语句有效
        PageHelper.startPage(req.getPage(),req.getSize());
        List<Ebook> ebookList = EbookMapper.selectByExample(ebookExample);
        PageInfo<Ebook> pageInfo=new PageInfo<>(ebookList);
        LOG.info("总条数:{}",pageInfo.getTotal());
        LOG.info("总页数:{}",pageInfo.getPages());

我们思考一个问题,如果我们给前端返回的数据还是原来的数据,那么前端只知道一个每页条数是不是依旧没法分页,因此我们还需要返回一个总条数。而我们就需要将这个总条数塞到返回参数里。同样的,既然我们需要对每个页面进行分页,那么总条数这个返回参数就必不可少,我们依然需要让他成为父亲般的存在,因为总条数并不属于查询列表中的数据,所以我们不采用之前的继承,而是我们让这个查询列表的参数成为它的一部分,创建一个新类PageResp,参数即为返回参数类。

public class Pa
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值