• SQL分页查询,SQL的LIMIT语句用法,SQL如何实现分页查询,SpringBoot实现分页查询。


    在SQL语言中主要是采用LIMIT语句进行分页查询,下面将以一个分页查询的案例来完成知识的回顾

    一)LIMIT语句基础:

    1、一个参数:

    SELECT * FROM data LIMIT 1;
    
    • 1

    假设满足条件的共有10条数据,上述语句会返回第一条满足条件的数据。

    2、两个参数:

    SELECT * FROM data LIMIT 2;
    SELECT * FROM data LIMIT 0,2;
    
    • 1
    • 2

    上述两条语句是等价的,都会返回满足条件的前两条。

    • 第一个0是表示忽略多少条满足条件的数据,第二个是要查询的总数。

      SELECT * FROM data LIMIT 1,2;

    以上面这条语句为例,表示忽略第一个满足条件的数据开始再查询两条,例如1,2,3满足条件,上面这条语句执行后将返回2,3这两条数据,于是就为实现了分页查询奠定了基础。


    二)实现分页查询:

    前台只需要向后台传入两个参数,一个是要查询的页码,另一个是每页数据的总数。

    page表示页码,length表示每页数据总长度。

    1、在后台处理page参数:

    int start = (page-1)*length; //表示前面已经查询出来的数据条数
    
    • 1

    2、处理好忽略数据长度之后即可开始分页查询了:

    SELECT * FROM data LIMIT start,length;
    
    • 1

    三)SpringBoot封装分页查询逻辑

    由于前台实现分页查询需要总页数,每页的数据等信息,所以我将分页查询封装成了一个对象,这样只需要将该对象返回给前台即可得到所有前台分页所需的数据了

    1、封装页面对象类:

    package com.example.emoswebbackground.Util;
    
    import lombok.Data;
    
    import java.io.Serializable;
    import java.util.List;
    
    @Data
    public class PageUtils implements Serializable {
        private static final long serialVersionUID = 1L;
        /*** 总记录数*/
        private long totalCount;
        /*** 每页记录数*/
        private int pageSize;
        /*** 总页数*/
        private int totalPage;
        /*** 当前页码*/
        private int pageIndex;
        /*** 列表数据*/
        private List list;
    
        public PageUtils(List list, long totalCount, int pageIndex, int pageSize) {
            this.list = list;
            this.totalCount = totalCount;
            this.pageSize = pageSize;
            this.pageIndex = pageIndex;
            this.totalPage = (int) Math.ceil((double) totalCount / pageSize);
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    2、Controller类:

        @PostMapping("/SearchLeaveByPage")
        @Operation(summary = "分页查询请假记录")
        //SearchLeaveByPageForm 对象共两个属性,页码和每页长度
        public R searchLeaveByPage(@Valid @RequestBody  SearchLeaveByPageForm form){
            int page = form.getPage();
            int length = form.getLength();
            //计算已查过的数据
            int start = (page-1)*length;
            //将数据转化为Map
            HashMap param = JSONUtil.parse(form).toBean(HashMap.class);
            param.put("start",start);
            //执行分页查询的service层
            PageUtils pageUtils = leaveService.searchByPage(param);
            return new R().put("page",pageUtils);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    【操作系统-存储】存储的分配和管理方式
    vue3 中使用echarts图表——柱状图
    简单地聊一聊Spring Boot的构架
    qt使用mysql数据库(自学笔记)
    Cesium 问题:输出的 纬度 latitude 是 0
    Qiskit系列(1)---Qiskit安装
    去雨去雪去雾算法本地实验速度对比
    c# 泛型
    在Azure上使用Portal查出造成SQL注入攻击的语句
    AutoGPT:自动化GPT原理及应用实践
  • 原文地址:https://blog.csdn.net/m0_67402026/article/details/126117879