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


請開始我的表演~

技巧一、重載換名術!

就拿引言中的例子來說,我們需要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);

在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM