• SpringBoot实现分页查询


    前言:

    学习了SpringBoot分页查询的两种写法,一种是手动实现,另一种是使用框架实现。现在我将具体的实现流程分享一下。

    首先是手动实现分页查询:

    先复习一下,SQL中的limit关键字,下面一行sql语句的意思是从第二个数据开始查,查询出两条数据

    SELECT * FROM sys_user limit 1,2;
    
    • 1

    使用limit前一个参数pageNum是从第几个数据开始查,后一个参数pageSize是查询多少条数据,

    注意数据库查询pageNum=0代表第一个数据。

    那么在Springboot中该如何写呢?

    controller:

    //    分页查询
    //    接口路径:/user/page?pageNum=1&pageSize=10
    //    @RequestParam接收
    //    limit第一个参数= (pageNum-1)+pageSize
        @GetMapping("/page")
        public List findPage(@RequestParam Integer pageNum,@RequestParam Integer pageSize){
            pageNum = (pageNum-1);
            return userMapper.selectPage(pageNum,pageSize);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    mapper:

    @Select("select * from sys_user limit #{pageNum},#{pageSize}")
        List selectPage(Integer pageNum, Integer pageSize);
    
    • 1
    • 2

    这样就写好了,测试一下:

    完善一下controller,添加查询 总条数的方法:

    //    分页查询
    //    接口路径:/user/page?pageNum=1&pageSize=10
    //    @RequestParam接收 前端url
    //    limit第一个参数= (pageNum-1)*pageSize
        @GetMapping("/page")
        public Map findPage(@RequestParam Integer pageNum, @RequestParam Integer pageSize){
            pageNum = (pageNum-1)*pageSize;
            List data = userMapper.selectPage(pageNum,pageSize);
            Integer total = userMapper.selectTotal();
            Map res = new HashMap<>();
            res.put("data",data);
            res.put("total",total);
            return res;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    接下来是关联前端分页和后台数据:

    **修改分页页面homeView:**使用fetch()请求分页数据

    created() {
        //请求分页数据
        fetch("localhost:9090/user/page?pageNum=1&pageSize=2").then(res =>res.json()).then(res =>{
          console.log(res)
        })
      },
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    fetch得到的是一个字符串数据,需要将其转换成Json格式,使用console.log()打印数据

    @JsonIgnore忽略某一个属性的注解

    修改前端页面表格数据:

    表格数据对应数据库的属性

    
              
              
              
              
              
              
              
              
              
              
              
              
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    修改前端数据内容:

    data() {
        return {
          tableData: [],  //表格的值默认为空数组
          total: 0,  //查询条数默认为0
          msg: "hello 阿晴",
          collapseBtnClass: 'el-icon-s-fold',
          isCollapse: false,
          sideWidth: 200,
          logoTextShow: true,
          headerBg: 'headerBg'
        }
      },
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    渲染页面:

    created() {
        //请求分页数据
        fetch("http://localhost:9090/user/page?pageNum=1&pageSize=2").then(res =>res.json()).then(res =>{
          console.log(res)
          this.tableData = res.data
          this.total = res.total
        })
      },
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    分页函数:

    
    
    
    
    
    load() {
          fetch("http://localhost:9090/user/page?pageNum="+this.pageNum+"&pageSize=" + this.pageSize)
              .then(res => res.json()).then(res => {
            console.log(res)
            this.tableData = res.data
            this.total = res.total
          })
        },
        handleSizeChange(pageSize){
          console.log(pageSize)
          this.pageSize = pageSize
          this.load()
        },
        handleCurrentChange(pageNum){
          console.log(pageNum)
          this.pageNum = pageNum
          this.load()
        }
      }
    
    • 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
    • 31

    实现分页功能:

    模糊查询:

    controller:

    @GetMapping("/page")
        public Map findPage(@RequestParam Integer pageNum, @RequestParam Integer pageSize,@RequestParam String username){
            pageNum = (pageNum-1)*pageSize;
            List data = userMapper.selectPage(pageNum,pageSize,username);
            Integer total = userMapper.selectTotal();
            Map res = new HashMap<>();
            res.put("data",data);
            res.put("total",total);
            return res;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    mapper:

    @Select("select * from sys_user where username like concat('%', #{username}, '%') limit #{pageNum},#{pageSize}")
        List selectPage(Integer pageNum, Integer pageSize,String username);
    
    • 1
    • 2

    测试一下:

    在前端绑定:

    搜索
    data() { return { tableData: [], total: 0, pageNum: 1, pageSize: 2, username: "", msg: "hello 阿晴", collapseBtnClass: 'el-icon-s-fold', isCollapse: false, sideWidth: 200, logoTextShow: true, headerBg: 'headerBg' } }, load() { fetch("http://localhost:9090/user/page?pageNum="+this.pageNum+"&pageSize=" + this.pageSize+"&username="+this.username) .then(res => res.json()).then(res => { console.log(res) this.tableData = res.data this.total = res.total }) },
    • 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
    • 31

    结语:坚定目标,日日精进,必有所成。共勉! !

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

  • 相关阅读:
    专栏十二:单细胞空间转录组四种常见的不同整合pipline
    JVM虚拟机-虚拟机性能监控、故障处理工具
    利用Tensorboard可视化模型、数据和训练过程
    戴钊《自我教练:迈向自我实现之路》读书笔记
    BFS专题6 字符迷宫
    合宙Air724UG LuatOS-Air LVGL API控件-开关 (Switch)
    科幻走进现实,酷似人脑的GPT有身体了
    网络安全还有就业前景吗?转行网络安全可行吗?
    clickhouse的另类表引擎
    mysql的常见函数
  • 原文地址:https://blog.csdn.net/m0_67401761/article/details/126114603