当前位置:首页 > 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 项目中创建一个登录组件,通常命名为 Login.vue。该组件包含表单元素,如用户名和密码输入框,以及提交按钮。 <template…

vue实现选择本地文件

vue实现选择本地文件

实现文件选择功能 在Vue中实现本地文件选择可以通过HTML原生的<input type="file">元素实现。创建一个基本的文件选择组件: <template> &…

vue公共列表的实现

vue公共列表的实现

实现 Vue 公共列表组件 公共列表组件通常用于展示重复结构的数据,例如商品列表、用户列表等。以下是一个典型的实现方式: 基础实现 创建可复用的列表组件 List.vue: <tem…

vue实现倒计时抢券

vue实现倒计时抢券

Vue 实现倒计时抢券功能 核心逻辑 倒计时抢券功能需要结合时间计算、状态管理和界面交互。通过 Vue 的响应式特性和生命周期钩子,可以高效实现这一需求。 实现步骤 1. 数据准备 在 Vue 组件…

vue实现autocomplete

vue实现autocomplete

Vue 实现 Autocomplete 功能 Vue 中实现 Autocomplete(自动完成)功能可以通过自定义组件或使用现有库完成。以下是几种常见方法: 方法一:使用 Vue 原生实现…

vue实现盖章

vue实现盖章

Vue 实现盖章功能 在Vue中实现盖章功能通常涉及前端UI交互,通过Canvas或SVG绘制印章,并允许用户拖拽或点击放置印章。以下是具体实现方法: 使用Canvas绘制印章 通过HTML5的…