Mybatis-Plus重写Page的奇技淫巧~

最近做视频练习的时候,因为前段需要的列表形式是rows:[xxx],而Mybatis-Plus的IPage对象默认返回的是records。

我们该如何做才能让他返回前端需要的列表形式呢?又该如何对这个列表进行修改呢?

请开始我的表演~

技巧一、重载换名术!

就拿引言中的例子来说,我们需要IPage对象可以把data列表存储在rows中。

我们要做的操作很简单,自己写一个Page类,然后继承默认的Page类,并重写它的方法!

import java.util.List;

public class Page<T> extends com.baomidou.mybatisplus.extension.plugins.pagination.Page {

    public List<T> getRows() {
        return super.getRecords();
    }

    public List<T> getRecords() {
        return null;
    }

    public Page(long current, long size) {
        super(current, size);
    }

}

你没有看错,就是这么简单几步!

  • 新增getRows()方法,返回父类的getRecords()的结果。
  • 重写getRecords()方法,让他返回空。(不然返回两次数据不太友好)
  • 写个有参构造方法调用父类的。
    在这里插入图片描述

技巧二、偷天换日去密码术!

事情是这样的,当你获取用户信息的时候,肯定不能把密码返回到前端吧!那么用了重载换名术之后,该如何再对获取到的列表进行修改呢?

请看下文!

// 使用咱们自定义的Page接收!
Page<Staff> data = baseMapper.selectPage(new Page<Staff>(page, size), query);
List<Staff> staffList = new ArrayList<>();
// 使用getRows()接收列表(用getRecords()是空的,因为重写了。)
for (Staff s: data.getRows()) {
	// 遍历设密码为空,并加入新的列表。
    s.setPassword(null);
    staffList.add(s);
}
// set的时候要用setRecords()!因为你没有setRows()方法,
// 而且就算去写一个,也会感觉困难重重,难道还要单独写个rows对象吗?
// 可是这样的话,getRows()又该返回什么呢?
// 所以这里直接取巧赋值给自带的records,然后最终getRows()的时候,
// 就会调用父类的getRecords(),获取到咱们改过的值!!!
data.setRecords(staffList);
// 返回的时候,强转成IPage类型。
return Result.ok((IPage<Staff>)data);

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值