当前位置:首页 > VUE

vue结合pagehelper实现分页

2026-01-22 06:19:11VUE

Vue 结合 PageHelper 实现分页

在 Vue 前端框架中结合后端 PageHelper 分页插件实现分页功能,通常需要前后端协作完成。以下是具体实现步骤:

后端实现(Spring Boot + PageHelper)

在 Spring Boot 项目中配置 PageHelper 并实现分页接口:

  1. 添加 PageHelper 依赖到 pom.xml

    <dependency>
     <groupId>com.github.pagehelper</groupId>
     <artifactId>pagehelper-spring-boot-starter</artifactId>
     <version>最新版本</version>
    </dependency>
  2. 创建分页查询接口:

    @GetMapping("/users")
    public PageInfo<User> getUsers(@RequestParam(defaultValue = "1") int pageNum, 
                               @RequestParam(defaultValue = "10") int pageSize) {
     PageHelper.startPage(pageNum, pageSize);
     List<User> users = userService.getAllUsers();
     return new PageInfo<>(users);
    }

前端实现(Vue + Axios)

在 Vue 项目中通过 Axios 调用分页接口并处理分页数据:

  1. 安装 Axios:

    npm install axios
  2. 创建分页组件:

    vue结合pagehelper实现分页

    
    <template>
    <div>
     <table>
       <tr v-for="item in tableData" :key="item.id">
         <td>{{ item.name }}</td>
         <!-- 其他字段 -->
       </tr>
     </table>
    
     <el-pagination
       @size-change="handleSizeChange"
       @current-change="handleCurrentChange"
       :current-page="currentPage"
       :page-sizes="[10, 20, 30, 50]"
       :page-size="pageSize"
       layout="total, sizes, prev, pager, next, jumper"
       :total="total">
     </el-pagination>
    </div>
    </template>
import axios from 'axios';

export default { data() { return { tableData: [], currentPage: 1, pageSize: 10, total: 0 } }, created() { this.fetchData(); }, methods: { fetchData() { axios.get('/api/users', { params: { pageNum: this.currentPage, pageSize: this.pageSize } }).then(response => { this.tableData = response.data.list; this.total = response.data.total; }); }, handleSizeChange(val) { this.pageSize = val; this.fetchData(); }, handleCurrentChange(val) { this.currentPage = val; this.fetchData(); } } }

```

关键点说明

  1. PageHelper 在后端会自动拦截 MyBatis 查询,添加 LIMIT 子句实现物理分页

  2. PageInfo 对象包含分页信息:

  • list:当前页数据列表
  • total:总记录数
  • pageNum:当前页码
  • pageSize:每页大小
  • pages:总页数
  1. 前端分页组件(如 Element UI 的 el-pagination)通过 current-change 和 size-change 事件触发数据重新加载

    vue结合pagehelper实现分页

  2. 前后端分页参数保持一致:

  • pageNum 对应 currentPage
  • pageSize 对应每页显示条数

优化建议

  1. 后端可以封装统一的分页响应对象,包含数据列表和分页信息

  2. 前端可以添加加载状态提示,提升用户体验

  3. 对于大数据量可以考虑添加滚动加载功能

  4. 分页参数可以存储在 Vuex 中实现跨组件共享

标签: 分页vue
分享给朋友:

相关文章

vue实现路由

vue实现路由

Vue 路由的实现方法 Vue 路由可以通过 Vue Router 库来实现,Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue Router 通…

vue实现前端

vue实现前端

Vue 实现前端的核心方法与步骤 安装 Vue 项目 使用 Vue CLI 或 Vite 创建项目。Vue CLI 是传统构建工具,Vite 是新一代轻量级工具。 npm init vue@la…

实现vue框架

实现vue框架

Vue框架的基本实现 Vue是一个渐进式JavaScript框架,用于构建用户界面。以下是实现Vue框架的基本步骤: 安装Vue 通过CDN引入Vue是最简单的方式: <script src…

vue 简单实现

vue 简单实现

以下是 Vue 的简单实现示例,涵盖基础模板、数据绑定、方法及生命周期: 基础模板与数据绑定 <div id="app"> <p>{{ message }}</p&…

vue 实现excel

vue 实现excel

Vue 实现 Excel 功能 前端导出 Excel 使用 xlsx 库可以轻松实现前端 Excel 导出功能。安装依赖: npm install xlsx 导出 Excel 示例代码: impo…

vue实现系统

vue实现系统

Vue 实现系统的核心方法 使用 Vue.js 构建系统时,需结合其响应式特性与组件化开发模式。以下为关键实现路径: 项目初始化与工程配置 通过 Vue CLI 或 Vite 创建项目骨架,推荐选择…