首页 > 其他分享 >SpringBoot + Vue实现分页查询

SpringBoot + Vue实现分页查询

时间:2023-11-21 23:22:42浏览次数:34  
标签:Vue SpringBoot resp springframework findAll import data page 分页

后端

在controller层修改

SpringBoot自带分页查询方法,只需要修改关键代码就可以

 @GetMapping("/findAll/{page}/{size}") //获取url输入的页码
    public Page<Users> findAll(@PathVariable("page") int page, @PathVariable("size") int size) { //将页码取到方法内
        Pageable pageable = PageRequest.of(page -1 , size); // page从0开始的,所以需要-1
        return usersRepository.findAll(pageable);
    }

UserHandler.java

package com.example.springboottest.controller;


import com.example.springboottest.entity.Users;
import com.example.springboottest.repository.UsersRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/user")
public class UserHandler {

    @Autowired
    private UsersRepository usersRepository;

    @GetMapping("/findAll/{page}/{size}")
    public Page<Users> findAll(@PathVariable("page") int page, @PathVariable("size") int size) {
        Pageable pageable = PageRequest.of(page -1 , size);
        return usersRepository.findAll(pageable);
    }

}

url测试

前端

需要在表格下面编写页码el代码

  <el-pagination
                background
                layout="prev, pager, next"
                page-size="6"
                :total="total"
                @current-change="page">
        </el-pagination>

记得安装axios

AJAX需要调用这个url

  page(currentPage) {
                const _this = this
                axios.get('http://localhost:8181/user/findAll/'+ currentPage +'/6').then(function (resp) {
                    _this.tableData =resp.data.content;
                    _this.total = resp.data.totalElements;
                })

            }

这是这个界面的全部代码

<template>
    <div class="full-height">
        <el-table
                :data="tableData"
                border
                style="width: 100%">
            <el-table-column
                    fixed
                    prop="id"
                    label="ID"
                    width="150">
            </el-table-column>
            <el-table-column
                    fixed
                    prop="name"
                    label="名称"
                    width="120">
            </el-table-column>
            <el-table-column
                    prop="password"
                    label="密码"
                    width="120">
            </el-table-column>
            <el-table-column
                    prop="email"
                    label="邮箱"
                    width="120">
            </el-table-column>
            <el-table-column
                    prop="birthday"
                    label="生日"
                    width="120">
            </el-table-column>
            <el-table-column
                    fixed="right"
                    label="操作"
                    width="100">
                <template slot-scope="scope">
                    <el-button @click="handleClick(scope.row)" type="text" size="small">查看</el-button>
                    <el-button type="text" size="small">编辑</el-button>
                </template>
            </el-table-column>
        </el-table>
        <el-pagination
                background
                layout="prev, pager, next"
                page-size="6"
                :total="total"
                @current-change="page">
        </el-pagination>
    </div>
</template>

<script>
    export default {
        methods: {
            handleClick(row) {
                console.log(row);
            },
            page(currentPage) {
                const _this = this
                axios.get('http://localhost:8181/user/findAll/'+ currentPage +'/6').then(function (resp) {
                    _this.tableData =resp.data.content;
                    _this.total = resp.data.totalElements;
                })

            }
        },
        created() {
            const _this = this
            axios.get('http://localhost:8181/user/findAll/1/6').then(function (resp) {
                _this.tableData =resp.data.content;
                _this.total = resp.data.totalElements;
            })

        },
        data() {
            return {
                total: null,
                tableData: null
            }
        }
    }
</script>
<style>
    .full-height {
        height: 100vh;
        overflow: hidden;
    }

    /* 如果你想要让el-table铺满整个高度,可以设置其高度为100% */
    .full-height el-table {
        height: 100%;
    }

    /* 如果你想要让el-pagination铺满整个宽度,可以设置其宽度为100% */
    .full-height el-pagination {
        width: 100%;
    }
</style>

实现截图

标签:Vue,SpringBoot,resp,springframework,findAll,import,data,page,分页
From: https://www.cnblogs.com/yzx-sir/p/17847881.html

相关文章

  • vue3所遇问题
    1. table表格无边框数据乱飞 解决方法:将import{}from'Elementplus'  删去  2.表单无法输入内容 解决方法 :   ref="form"     :model="form333"   ref与:modle 不可重名......
  • Vue中的Vuex
    概述Vuex是一个专为Vue.js应用程序开发的状态管理模式+库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。对于组件间的通信方式而言,vuex也是一个可以进行任意组件通信的方法。使用场景:某个状态在很多组件来使用(个人信息......
  • vue 检测可视区域大小及是否改变
    表格height:'auto',如果是只有一个vxe-grid还好,会自动伸展高度,但是多个展示的时候,比如左侧列表,右侧显示一个流程。这样height:'auto',发现不太好使。这样就要计算可视区域高度,并进行动态处理。  constareaHeight=ref(0); onMounted(()=>{areaHeight.value=d......
  • 基于springboot的校园失物招领系统-计算机毕业设计源码+LW文档
    校园失物招领系统介绍在现代大学校园中,失物招领系统是一个至关重要的组成部分,旨在为学生、教职员工和访客提供便捷的失物招领服务。本文将介绍一个基于SpringBoot的校园失物招领系统,该系统结合了现代技术和用户友好的界面,提供了高效、安全和快速的失物招领流程。系统架构该系统采......
  • 基于Springboot教学管理系统-计算机毕业设计源码+LW文档
    摘 要传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装教学管理系统软件来发挥其高效地信息处理的作用,可以规范信息管理流程,让管理工作可以系统化和程序化,同时,教学管理系统的有效运用......
  • 基于vue技术的农业设备租赁系统-计算机毕业设计源码+LW文档
    摘 要使用旧方法对农业设备租赁系统的信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在农业设备租赁系统的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次开发的农业设备租赁系统对收货地址管理、字典管理......
  • 前端vue经典面试题78道(重点详细简洁)
    前端vue经典面试题78道(重点详细简洁)目录1.自我介绍2.vue面试题1.v-show和v-if区别的区别:2.为何v-for要用key3.描述vue组件声明周期mm单组件声明周期图​父子组件生命周期图4.vue组件如何通信5.描述组件渲染和更新的过程1、vue组件初次渲染过程2、vue组件更新过程6......
  • SpringBoot使用RedisTemplate
    SpringBoot使用RedisTemplate目录1.Redis五种基础数据结构2.SpringBoot连接Redis1引入依赖2配置redis连接3编写测试类3.详解RedisTemplate的API1常用数据操作2.几种数据结构操作的具体用法1.Redis五种基础数据结构参考链接:Redis入门-数据类型:5种基础数据类......
  • 记录--用了那么久的Vue,你了解Vue的报错机制吗?
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 Vue的5种处理Vue异常的方法相信大家对Vue都不陌生。在使用Vue的时候也会遇到报错,也会使用浏览器的F12来查看报错信息。但是你知道Vue是如何进行异常抛出的吗?vue是如何处理异常的呢?接下来和大家介绍介绍,Vue......
  • js实现自动滚动以及分页数据请求,解决不同手机scrollTop++兼容问题
    创作不易,主要是为了分享,希望能帮到碰到类似问题的朋友,有帮助的话就给点个赞吧。 需求:公司需要实现一份合同的自动滚动预览,以及分页请求下一页数据继续滚动,直到所有合同加载完成就取消滚动。问题:不同手机使用scrollTop++,会出现+1出现小数点,整数的情况,导致请求下一页的数据无法......