vue中使用分页组件、将从数据库中查询出来的数据分页展示(前后端分离SpringBoot+Vue)

简介: 这篇文章详细介绍了如何在Vue.js中使用分页组件展示从数据库查询出来的数据,包括前端Vue页面的表格和分页组件代码,以及后端SpringBoot的控制层和SQL查询语句。

文章目录

  • 1、看实现的效果
  • 2、前端vue页面核心代码
    • 2.1、 表格代码(表格样式可以去elementui组件库直接调用相应的)
    • 2.2、分页组件代码
    • 2.3 、script中的代码
  • 3、后端核心代码
    • 3.1 控制层
    • 3.2 编写的sql语句调用
    • 3.3 、service层 dao层略

1、看实现的效果

在这里插入图片描述
在这里插入图片描述

2、前端vue页面核心代码

2.1、 表格代码(表格样式可以去elementui组件库直接调用相应的)

    <div>
              <el-table
                :data="tableDatas"
                border
                style="width: 100%; height: 450px"
              >
                <el-table-column prop="uid" label="编号" width="100">
                </el-table-column>
                <el-table-column prop="userName" label="姓名" width="100">
                </el-table-column>
                <el-table-column prop="nickName" label="昵称" width="100">
                </el-table-column>
                <el-table-column prop="gender" label="性别" width="100">
                </el-table-column>
                <el-table-column prop="idCard" label="身份证" width="200">
                </el-table-column>
                <el-table-column prop="email" label="邮箱" width="200">
                </el-table-column>
                <el-table-column prop="phone" label="手机号" width="200">
                </el-table-column>
                <el-table-column
                  prop="registerTime"
                  label="注册时间"
                  width="200"
                >
                </el-table-column>
                <el-table-column fixed="right" label="操作" width="200">
                  <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>
            </div>

2.2、分页组件代码

直接放到相应的位置

   <!--分页组件-->
            <div style="text-align: left">
              <el-row>
                <el-col :span="12">
                  <el-pagination
                    style="margin: 15px 0px"
                    background
                    layout="prev, pager, next, jumper, total, sizes"
                    :page-size="size"
                    :current-page="now"
                    :page-sizes="[2, 4, 6, 8]"
                    @current-change="findPage"
                    @size-change="findSize"
                    :total="total"
                  >
                  </el-pagination>
                </el-col>
              </el-row>
            </div>

2.3 、script中的代码

提示:这里的total默认设置为0,否则会出现意想不到的问题(不影响使用、但是看起来难受)
在进行方法调用时,会根据传入的size和page作为参数、再次查询数据库

<script>
export default {
  data() {
    return {
      total: 0,
      now: 1,
      size: 8,
      input2: "",
      tableDatas: [],
    };
  },
  methods: {
    handleClick(row) {
      console.log(row);
    },

    // 第n页信息
    findPage(now_page) {
      //用来处理当前页的方法,page为当前页
      this.now = now_page;
      this.showAllUserInfo(now_page, this.size);
    },
    findSize(now_size) {
      //用来处理每页条数的方法,size为当前页条数
      this.size = now_size;
      this.showAllUserInfo(this.now, now_size);
    },

    // 展示所有的用户信息
    showAllUserInfo(currentPage, pageSize) {
      //异步请求显示所有数据
      currentPage = currentPage ? currentPage : this.now;
      pageSize = pageSize ? pageSize : this.size;
      axios
        .get("user/findAllUser/" + currentPage + "/" + pageSize)
        .then((res) => {
          console.log(res);
          this.tableDatas = res.data.data.result.userList;
          this.total = res.data.data.result.totals;
        });
    },
  },
  created() {
    this.showAllUserInfo();
  },
};
</script>

3、后端核心代码

3.1 控制层

   // 查询所有的用户信息
    @RequestMapping(value = "/user/findAllUser/{page}/{size}",method = RequestMethod.GET)
    public Result findAllUser(@PathVariable("page") Integer page,@PathVariable("size") Integer size){
        //准备数据 通过这两个参数,可以算出start   计算方法 start=size(page-1)
        int currentPage = page;//当前是第几页
        int pageSize = size; //页面大小
        Map<String, Integer> map = new HashMap<String, Integer>();
        map.put("startIndex", (currentPage - 1) * pageSize);
        map.put("pageSize", pageSize);
        List<User> userList = userService.findAllUser(map);
        Long totals = userService.findUserTotals();
        HashMap<String, Object> result = new HashMap<>();
        result.put("userList",userList);
        result.put("totals",totals);
        return  Result.ok().data("result",result);

    }

3.2 编写的sql语句调用

<!--    分页查询所有用户-->
    <select id="findAllUser" parameterType="Map" resultType="com.zyz.bookshopmanage.pojo.User">
        select * from bookshopmanage.tbl_user limit #{startIndex},#{pageSize}
    </select>

3.3 、service层 dao层略

在这里插入图片描述

相关文章
|
6月前
|
前端开发 安全 Java
基于springboot+vue开发的会议预约管理系统
一个完整的会议预约管理系统,包含前端用户界面、管理后台和后端API服务。 ### 后端 - **框架**: Spring Boot 2.7.18 - **数据库**: MySQL 5.6+ - **ORM**: MyBatis Plus 3.5.3.1 - **安全**: Spring Security + JWT - **Java版本**: Java 11 ### 前端 - **框架**: Vue 3.3.4 - **UI组件**: Element Plus 2.3.8 - **构建工具**: Vite 4.4.5 - **状态管理**: Pinia 2.1.6 - **HTTP客户端
783 4
基于springboot+vue开发的会议预约管理系统
|
6月前
|
数据采集 关系型数据库 MySQL
python爬取数据存入数据库
Python爬虫结合Scrapy与SQLAlchemy,实现高效数据采集并存入MySQL/PostgreSQL/SQLite。通过ORM映射、连接池优化与批量提交,支持百万级数据高速写入,具备良好的可扩展性与稳定性。
|
7月前
|
存储 数据管理 数据库
数据字典是什么?和数据库、数据仓库有什么关系?
在数据处理中,你是否常困惑于字段含义、指标计算或数据来源?数据字典正是解答这些问题的关键工具,它清晰定义数据的名称、类型、来源、计算方式等,服务于开发者、分析师和数据管理者。本文详解数据字典的定义、组成及其与数据库、数据仓库的关系,助你夯实数据基础。
数据字典是什么?和数据库、数据仓库有什么关系?
|
6月前
|
人工智能 Java 关系型数据库
使用数据连接池进行数据库操作
使用数据连接池进行数据库操作
174 11
|
6月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
1101 5
|
7月前
|
前端开发 JavaScript Java
基于springboot+vue开发的校园食堂评价系统【源码+sql+可运行】【50809】
本系统基于SpringBoot与Vue3开发,实现校园食堂评价功能。前台支持用户注册登录、食堂浏览、菜品查看及评价发布;后台提供食堂、菜品与评价管理模块,支持权限控制与数据维护。技术栈涵盖SpringBoot、MyBatisPlus、Vue3、ElementUI等,适配响应式布局,提供完整源码与数据库脚本,可直接运行部署。
387 6
基于springboot+vue开发的校园食堂评价系统【源码+sql+可运行】【50809】
|
7月前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL数据库的WAL日志与数据写入的过程
PostgreSQL中的WAL(预写日志)是保证数据完整性的关键技术。在数据修改前,系统会先将日志写入WAL,确保宕机时可通过日志恢复数据。它减少了磁盘I/O,提升了性能,并支持手动切换日志文件。WAL文件默认存储在pg_wal目录下,采用16进制命名规则。此外,PostgreSQL提供pg_waldump工具解析日志内容。
660 0
|
JSON 缓存 前端开发
【SpringBoot 2】(八)数据响应 页面响应(一)
【SpringBoot 2】(八)数据响应 页面响应(一)
319 0
【SpringBoot 2】(八)数据响应 页面响应(一)
|
JSON 缓存 前端开发
【SpringBoot 2】(八)数据响应 页面响应(一)
【SpringBoot 2】(八)数据响应 页面响应(一)
582 0
【SpringBoot 2】(八)数据响应 页面响应(一)