• 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);
    

    在这里插入图片描述

  • 相关阅读:
    git的简单操作
    angularjs的基础
    针对IE8透明度设置及一些简单的兼容问题
    sublime 部分常用的快捷键
    Linux简单的操作
    AngularJS 简单的介绍
    html5的viewport与css3的媒体查询
    css的优先级的相关内容
    (转) vmware 切换桥接模式
    从nginx的编译安装,了解编译安装原理(转)
  • 原文地址:https://www.cnblogs.com/zhangA/p/14081001.html
Copyright © 2020-2023  润新知