封装一个统一结果返回类,有很多种方法,但是具体调用都大同小异,这里演示其中一种。
只需要两个步骤即可完成统一结果返回类的封装。
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;
}
}
到这里已经完成了统一结果返回类的封装,返回类封装好后可在控制器中直接调用。
欢迎小伙伴们 私聊评论 讨论疑点难点。