具体使用:
@RequestMapping("/test")
@RestController
public class TestController {
@RequestMapping("/test1")
public Rt<String> test1() {
return Rt.result(RtMsg.CODE_SUCCESS);
}
@RequestMapping("/test2")
public Rt<Date> test2() {
return Rt.result(RtMsg.CODE_SUCCESS, new Date());
}
@RequestMapping("/test3")
public Rt test3() {
return Rt.result(RtMsg.CODE_SUCCESS, new Date());
}
@RequestMapping("/test4")
public Rt test4() {
return Rt.result("200", "success", new Date());
}
}
具体实现:
1. 定义接口:
public interface RtM {
/**
* 定义接口方法, 后续枚举类实现该接口后, 可共用返回结果集
*
* @return
*/
String getCode();
/**
* 定义接口方法, 后续枚举类实现该接口后, 可共用返回结果集
*
* @return
*/
String getMsg();
}
2. 创建基础枚举类, 实现接口
public enum RtMsg implements RtM {
/**
* 返回状态: 成功200, 失败非200
*/
CODE_SUCCESS("200", "SUCCESS"),
CODE_ERROR("0", "FAIL"),
;
public String code;
public String msg;
RtMsg(String code, String msg) {
this.code = code;
this.msg = msg;
}
@Override
public String getCode() {
return code;
}
@Override
public String getMsg() {
return msg;
}
}
3. 具体返回结果集对象
public class Rt<T> {
private String code;
private String msg;
private T data;
public Rt() {
}
public Rt(String code, String msg, T data) {
this.code = code;
this.msg = msg;
this.data = data;
}
public Rt(String code, String msg) {
this.code = code;
this.msg = msg;
}
public Rt(String msg, T data) {
this.msg = msg;
this.data = data;
}
public Rt(RtM resultCode) {
this.code = resultCode.getCode();
this.msg = resultCode.getMsg();
}
public Rt(RtM resultCode, T data) {
this.code = resultCode.getCode();
this.msg = resultCode.getMsg();
this.data = data;
}
/**
* 自定义-无返回值
*
* @param code
* @param msg
* @return
*/
public static Rt result(String code, String msg) {
return new Rt(code, msg);
}
/**
* 自定义-传返回值
*
* @param code
* @param msg
* @param data
* @return
*/
public static Rt result(String code, String msg, Object data) {
return new Rt(code, msg, data);
}
/**
* 枚举: 成功/失败 - 返回状态码+提示语句+数据展示
*
* @param resultCode
* @param data
* @return
*/
public static Rt result(RtM resultCode, Object data) {
return new Rt(resultCode.getCode(), resultCode.getMsg(), data);
}
/**
* 枚举: 成功/失败 - 返回状态码+提示语句
*
* @param resultCode
* @return
*/
public static Rt result(RtM resultCode) {
return new Rt(resultCode.getCode(), resultCode.getMsg());
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
注: 后续可拓展创建不同枚举类, 避免项目中所有提示语句都放在同一个枚举类中.