当前位置:首页 > 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中实现公式展示或计算可以通过多种方式实现,以下为具体方法: 使用模板插值与计算属性 若公式较简单,可直接在模板中使用插值表达式或计算属性。例如计算圆的面积: <template>…

vue 实现关闭

vue 实现关闭

Vue 实现关闭功能的方法 在Vue中实现关闭功能通常涉及组件销毁、模态框隐藏或路由跳转等场景。以下是几种常见实现方式: 销毁当前组件 使用v-if或v-show控制组件显示/隐藏,适用于局部组件:…

vue实现图片

vue实现图片

Vue 实现图片功能的方法 静态图片引入 在 Vue 项目中,可以通过 src 属性直接引入静态图片。图片通常放在 public 或 assets 目录下。 <template> &…

vue实现弹幕

vue实现弹幕

Vue 实现弹幕功能 弹幕功能通常包括动态生成、滚动显示、颜色和速度随机化等特性。以下是基于 Vue 3 的实现方法。 核心思路 使用 CSS 动画控制弹幕从右向左滚动。 动态生成弹幕数据,随机设置…

vue实现单词逆转

vue实现单词逆转

实现单词逆转的方法 在Vue中实现单词逆转可以通过多种方式完成,以下是几种常见的方法: 使用计算属性逆转单词 计算属性是Vue中处理数据逻辑的理想选择。可以通过计算属性来实现单词逆转: <t…

vue实现分页条数

vue实现分页条数

实现分页条数的方法 在Vue中实现分页条数功能,通常需要结合分页组件和数据请求逻辑。以下是几种常见的实现方式: 使用Element UI的分页组件 Element UI提供了现成的分页组件,可以快…