Vue+Springboot+MySQL 实现分页

news/2024/7/10 0:13:15 标签: vue, mysql, spring boot

自己想的一个分页的逻辑,分享给大家。
在这里插入图片描述

Vue部分

<template>
    <div>
        <el-table
                :data="tableData"
                stripe
                style="width: 100%">
            <el-table-column
                    prop="userName"
                    label="用户名"
                    width="180">
            </el-table-column>
            <el-table-column
                    prop="realName"
                    label="姓名"
                    width="180">
            </el-table-column>
            <el-table-column
                    prop="useType"
                    label="用户类别">
            </el-table-column>
            <el-table-column
                    prop="docTitleID"
                    label="职称">
            </el-table-column>
            <el-table-column
                    prop="isScheduling"
                    label="是否排班">
            </el-table-column>
            <el-table-column
                    prop="deptID"
                    label="科室">
            </el-table-column>
        </el-table>
        <el-pagination
                small
                layout="prev, pager, next"
                :page-size="pageSize"
                :total="total" @current-change="page">
        </el-pagination>
    </div>
</template>

<script>
    export default {
        name: "PageOne",
        created() {
            const _this = this;

            axios.get('http://localhost:8089/userList?pageNum=0&pageSize=' + this.pageSize)
                .then((response) => {
                    _this.tableData = response.data.userList
                    _this.total = response.data.TotalNum
                })
        },
        methods: {
            page(currentPage) {
                const _this = this

                axios.get('http://localhost:8089/userList?pageNum=' + (currentPage - 1) + '&pageSize=' + this.pageSize)
                    .then((response) => {
                        _this.tableData = response.data.userList
                    })
            }
        },
        data() {
            return {
                total: 0,
                pageSize: 5,
                tableData: []
            }
        }
    }
</script>

使用ElementUI做了一个表格。

  • <el-table-column>标签就是每一列的信息。
  • <el-pagination>标签就是页码。
  • @current-change该事件在切换页码时触发。对应的函数page中参数currentPage不需传参,它表示切换的页码,即点击page2,它的值就是2。
  • created时,默认请求第一页的数据,这里是用axios发送请求,附带两个参数,即页码数pageNum和每一页要几条数据pageSize。这里的axios还要请求数据的总条数,以ElementUI生成页码。
  • const _this = this是考虑到axios的回调函数中this指向的不确定性。

Springboot部分

这里只关注Controller部分和Mapper.xml部分。

    @ResponseBody
    @RequestMapping("/userList")
    public Map<String, Object> userList(Integer pageSize, Integer pageNum) {
        Map<String, Object> map = new HashMap<>();
        List<User> userList = userService.findUserList(pageSize, pageNum * pageSize);
        Integer TotalNum = userService.userTotalNum();

        map.put("userList", userList);
        map.put("TotalNum", TotalNum);
        return map;
    }

很简单的逻辑,userService.findUserList(pageSize, pageNum * pageSize)这里的两个参数,就是sqllimit语法中开始索引,索引条数

  <select id="findUserList" resultType="user">
       SELECT * FROM `user`
       WHERE DelMark = 1
           LIMIT #{pageNum},#{pageSize}
   </select>
    <select id="userTotalNum" resultType="Integer">
        SELECT COUNT(delMark = 1) FROM `user`
    </select>

完成!
在这里插入图片描述


http://www.niftyadmin.cn/n/1257973.html

相关文章

aixos post请求 参数传递失败

最近使用Vue和Springboot做一个项目&#xff0c;需要添加一个User&#xff0c;从前端表单发起axios的post请求&#xff0c;然后发现了这个很折磨的错误。 问题 Vue部分 Springboot部分 发送的数据是&#xff1a; 结果&#xff0c;debug显示&#xff1a; 也就是说所有的参数…

最优编辑

题目&#xff1a;对于两个字符串A和B&#xff0c;我们需要进行插入、删除和修改操作将A串变为B串&#xff0c;定义c0&#xff0c;c1&#xff0c;c2分别为三种操作的代价&#xff0c;请设计一个高效算法&#xff0c;求出将A串变为B串所需要的最少代价。给定两个字符串A和B&#…

Springboot+Vue demo

分享一个后端由 SpringBoot&#xff0c;前端VueElementUI&#xff0c;数据库MySQL&#xff0c;实现的一个简单CRUD的demo&#xff0c;可能用到的同学可以加以修改来使用。 首页 添加用户 修改用户 删除用户 注意 注意你的数据库版本&#xff0c;java版本是否和此demo一致&…

轻松理解 async 与 await

async 与 await 是ES8 中提出的语法&#xff0c;主要是为了解决异步任务的回调。 这里总结了几种处理异步任务回调的方法&#xff0c;从中观察async是如何诞生的。 这里利用node环境下的文件读写举例。 普通回调 fs.readFile(./app.js, (err, data) > {console.log(data.…

【Redis】5、Redis事务处理

MULTI 、EXEC 、DISCARD 和WATCH 是 Redis 事务的基础1.MULTI 命令用于开启一个事务&#xff0c;它总是返回 OK 。MULTI 执行之后&#xff0c;客户端可以继续向服务器发送任意多条命令&#xff0c;这些命令不会立即被执行&#xff0c;而是被放到一个队列中 2.EXEC 命令被调用时…

Nodejs+Vue wzry项目 开发记录

收获 <el-menu > 这里不加router &#xff0c;index无法跳转${}这种字符串很香&#xff0c;不再用拼接了&#xff08;好无语明明学过&#xff0c;却忘记用…&#xff09;修改页面和新增页面可以用一个组件&#xff0c;一些选择显示的东西用v-if删除的话&#xff0c;就用…

大数据系列之并行计算引擎Spark部署及应用

相关博文&#xff1a; 大数据系列之并行计算引擎Spark介绍 之前介绍过关于Spark的程序运行模式有三种&#xff1a; 1.Local模式&#xff1b; 2.standalone(独立模式&#xff09; 3.Yarn/mesos模式 本文将介绍Spark安装及运行模式的第1、3两种模式。 安装包&#xff1a; spark-2…

Nodejs 上传图片并预览

本文分两个部分&#xff0c;第一部分为nodejsexpress和前端原生jsaxios&#xff0c;第二部分为实际应用VueelementUI和nodeexpress中配置。 原生jsaxios实现 效果&#xff1a; node端&#xff1a; const express require(express)上传文件所需的模块 const multer requir…