[ PageHelper + PrimeVue ] 实现后端分页 仅此一篇

PrimeVue的前端分页组件平时使用较少,本篇实现了后端PageHelper 分页提供数据,前端 PrimeVue组件 的 DataTable 接收数据,分页 采用懒加载的方式展示数据.

前端标签代码: DataTable接收数据,以及分页标签模板

    <DataTable :value="customers" class="p-datatable-customers" 
      lazy paginator :rows="5" ref="dt" dataKey="id" 
      paginatorTemplate="FirstPageLink PrevPageLink PageLinks NextPageLink LastPageLink CurrentPageReport RowsPerPageDropdown"
      :totalRecords="totalRecords" :loading="loading" 
      @page="onPage($event)">
      <column selectionMode="multiple" headerStyle="width: 3rem" />
      <column field="factoryName" header="厂商" header-style="font-weight: bold" />
      <column field="productName" header="产品" header-style="font-weight: bold" />
      <column field="docuName" header="命令" header-style="font-weight: bold" />
      <column field="script" header="脚本" header-style="font-weight: bold" />
      <column field="remark" header="备注" header-style="font-weight: bold" />
    </DataTable>

前端Script代码: 定义懒加载请求数据lazyParams,以及loadLazyData(),onPage(event)请求方法

<script>
export default {
  data() {
    return {
      customers: null,
      loading: false,
      totalRecords: 0,
      lazyParams: {},
    }
  },
  mounted() {
    this.loading = true;
    this.lazyParams = {
      rows: this.$refs.dt.rows,
      page: 0,
    };
    this.loadLazyData();
  },
  methods: {
    loadLazyData() {
      this.loading = true;
      setTimeout(() => {
        this.$APIPOST('/telecontrol/script/get_page', JSON.stringify(this.lazyParams)).then((res) => {
          this.customers = res.data.list;
          this.totalRecords = res.data.totalRecords;
          this.loading = false;
        });
      }, Math.random() * 100 + 200);
    },
    onPage(event) {
      this.lazyParams = event;
      this.loadLazyData();
    },
  }
}
</script>

后端实现:定义分页对象jsonPage, 含PageInfo对象转JsonPage对象方法

import com.github.pagehelper.PageInfo;
import lombok.Data;

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

/**
 * @Description: 分页对象
 * @Author: mc 2023/3/19 10:27
 */
@Data
public class JsonPage<T> implements Serializable {

    /**
     * 页码
     */
    private Integer page;
    /**
     * 每页条数
     */
    private Integer rows;
    /**
     * 总条数
     */
    private Long totalRecords;
    /**
     * 分页查询结果
     */
    private List<T> list;

    /**
     * 构建分页对象
     * @param pageInfo
     * @param <T>
     * @return
     */
    public static <T> JsonPage<T> restPage(PageInfo<T> pageInfo) {
        JsonPage<T> result = new JsonPage<>();
        result.setTotalRecords(pageInfo.getTotal());
        result.setList(pageInfo.getList());
        return result;
    }
}

后端实现:Service调用方法,查询数据,数据重构,返回Controller层,

    /**
     * 分页查询脚本档案
     * @return 分页信息
     */
    public JsonPage<Script> getPage(Integer page, Integer rows) {
        PageHelper.startPage(page + 1, rows);
        List<Script> list = scriptMapper.selectList(null);
        return JsonPage.restPage(new PageInfo<>(list));
    }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值