【分页】Spring Boot 列表分页 + javaScript前台展示

后端:

准备好查询实体与分页实体

1、分页工具实体

java 复制代码
package com.ruoyi.dms.config;

import com.alibaba.nacos.api.model.v2.Result;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * @author 宁兴星
 * @description: 列表返回结果集
 */
@Data
public class PageResult<T> implements Serializable {
    /**
     * 总条数
     */
    private long total;
    /**
     * 结果集合
     */
    private List<T> list;
    public PageResult() {
    }
    public PageResult(long total, List<T> list) {
        this.total = total;
        this.list = list;
    }
    public static <T> PageResult<T> toPageResult(long total, List<T> list){
        return new PageResult(total , list);
    }
    public static <T> Result<PageResult<T>> toResult(long total, List<T> list){
        return Result.success(PageResult.toPageResult(total,list));
    }
}

2、列表请求对象实体:

java 复制代码
package com.ruoyi.dms.domain.req;

import lombok.Data;

/**
 * @author: 宁兴星
 * Date: 2024/9/28 10:29
 * Description:
 */
@Data
public class EquipmentCategoryRequest {

    /**
     * 设备类目名称
     */
    private String equipmentCategoryName;
    /**
     * 是否启用
     */
    private Integer status;

    /**
     * 分页参数
     */
    private Integer pageNum;
    /**
     * 每页条数
     */
    private Integer pageSize;
}

Controller

java 复制代码
 /**
     * 设备类目管理列表
     */
    @GetMapping("/ec/list")
    public R<PageResult<EquipmentCategoryVo>> list(EquipmentCategoryRequest request){
        PageResult<EquipmentCategoryVo> list = ecService.list(request);
        return R.ok(list);
    }

Service

java 复制代码
 PageResult<EquipmentCategoryVo> list(EquipmentCategoryRequest request);

ServiceImpl

java 复制代码
 @Override
    public PageResult<EquipmentCategoryVo> list(EquipmentCategoryRequest request) {
        // 分页
        PageHelper.startPage(request.getPageNum(), request.getPageSize());
        // 查询
        List<EquipmentCategoryVo> list = ecMapper.list(request);
        // 封装分页信息
        PageInfo<EquipmentCategoryVo> pageInfo = new PageInfo<EquipmentCategoryVo>(list);
        // 返回分页结果
        return PageResult.toPageResult(pageInfo.getTotal(), pageInfo.getList());
    }

Mapper

java 复制代码
List<EquipmentCategoryVo> list(@Param("request") EquipmentCategoryRequest request);

前端:

前端使用实现分页vue2

链接: 饿了么UI

1、api/xxx/xxx.js 中

javascript 复制代码
export function esList(equipmentCategoryRequest) {
  return request({
    url: '/dms/ec/list' ,
    method: 'get',
    params: equipmentCategoryRequest,
  })
}

2、view/xxx/xxx.vue 中

javascript 复制代码
<template>
	<div>
	 <label for="category-name" style="margin-left: 20px">类目名称:</label>
      <el-input
        id="category-name"
        type="text"
        placeholder="请输入名称"
        v-model="searchForm.equipmentCategoryName"
        clearable
        style="width: 200px;margin-bottom: 20px;margin-right: 10px "
      />
      <label for="category-name">状态:</label>
      <el-select v-model="searchForm.status" placeholder="请选择状态" style="width: 200px; margin-right: 10px" clearable>
        <el-option label="停用" value="0"></el-option>
        <el-option label="启用" value="1"></el-option>
      </el-select>
<!--      搜索按钮-->
      <el-button @click="esList"
                 style="color: #1482f0"
                 class="el-icon-search"
      >搜索</el-button>


		<div class="block" style="margin-top: 10%;text-align: center;">
	        <el-pagination
	          @size-change="handleSizeChange"
	          @current-change="handleCurrentChange"
	          :current-page="searchForm.pageNum"
	          :page-sizes="[3, 5, 10, 30]"
	          :page-size="searchForm.pageSize"
	          layout="total, sizes, prev, pager, next, jumper"
	          :total="total">
	        </el-pagination>
	      </div>
      </div>
</template>
........等
	 data() {
	    return {
	      searchForm: {
	        pageNum: 1,
	        pageSize: 3,
	      },
     	 total: 0,
     	}
     },
	methods: {
	  	//列表
	   esList(){
	     esList(this.searchForm).then(response => {
	       this.equipmentCaTableData = response.data.list;
	       this.total = response.data.total;
	     })
	   },
	    handleSizeChange(val) {
	      this.searchForm.pageSize = val;
	      this.esList();
	    },
	    handleCurrentChange(val) {
	      this.searchForm.pageNum = val;
	      this.esList();
	    },
	},

效果:


相关推荐
serendipity_hky27 分钟前
互联网大厂Java面试故事:核心技术栈与场景化业务问题实战解析
java·spring boot·redis·elasticsearch·微服务·消息队列·内容社区
qq_3280678128 分钟前
springboot4 启动 Unable to find JSON tool
spring boot·json
毕设源码-钟学长1 小时前
【开题答辩全过程】以 基于Javaweb的电动汽车充电桩管理系统为例,包含答辩的问题和答案
java·spring boot
局i1 小时前
Vue 中 v-text 与 v-html 的区别:文本渲染与 HTML 解析的抉择
前端·javascript·vue.js
+VX:Fegn08951 小时前
计算机毕业设计|基于springboot+vue的学校课程管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·课程设计
fruge1 小时前
接口 Mock 工具对比:Mock.js、Easy Mock、Apifox 的使用场景与配置
开发语言·javascript·ecmascript
S***26752 小时前
【监控】spring actuator源码速读
java·spring boot·spring
贩卖黄昏的熊2 小时前
typescript 快速入门
开发语言·前端·javascript·typescript·ecmascript·es6
f***24112 小时前
springboot系列--自动配置原理
java·spring boot·后端