统一结果返回类

582 阅读1分钟

封装一个统一结果返回类,有很多种方法,但是具体调用都大同小异,这里演示其中一种。

只需要两个步骤即可完成统一结果返回类的封装。

1,定义一个接口存放状态码信息,方便返回类直接调用:

public interface ResultCode {
    public static Integer SUCCESS=20000; //成功

    public static Integer ERROR=20001;  //失败
}

2,定义结果返回类R

@Data的含义:lombok表达式,代表getter()和setter()方法

返回结果中包括四个字段,分别是

(1)是否成功success

(2) 状态码code

(3)附带信息message

(4) 返回数据,用map集合,采取key-value键值对的方式存放数据

//统一结果返回类
@Data
public class R {

    private Boolean success;  //成功状态

    public Integer code;    //状态码

    public String message;   //返回信息

    private Map<String,Object> data=new HashMap<String,Object>();  //返回数据

    private R(){} //私有化,只能用给出的静态方法

    //成功静态方法
    public static R ok(){
        R r=new R();
        r.setSuccess(true);
        r.setCode(ResultCode.SUCCESS);
        r.setMessage("成功");
        return r;
    }

    //失败静态方法
    public static R error(){
        R r=new R();
        r.setSuccess(false);
        r.setCode(ResultCode.ERROR);
        r.setMessage("失败");
        return r;
    }

    //this代表这个对象

    //链式编程 R.ok().code().message()

    public R success(Boolean success){
        this.setSuccess(success);
        return this;
    }

    public R message(String message){
        this.setMessage(message);
        return this;
    }

    public R code(Integer code){
        this.setCode(code);
        return this;
    }

    public R data(String key,Object value){
        this.data.put(key,value);
        return this;
    }

    public R data(Map<String,Object> map){
        this.setData(map);
        return this;
    }

}

到这里已经完成了统一结果返回类的封装,返回类封装好后可在控制器中直接调用。

欢迎小伙伴们 私聊评论 讨论疑点难点。