什么是ResultVo
由于现在大部分都是前后端分离项目,所以为了统一规范,使用ResultVo来让我们的代码更加简洁.利用唯一的code码来标识给前端返回值的状态
为什么要封装ResultVo
1 封装复用性好
2 代码简洁
3 跟前端方便沟通
ResultVo 封装用到哪些知识点
1 泛型
2 static
3 构造函数
ResultVo 封装思路
1 把统一的success和error封装
2 把code码代表的意思封装
ResultVo 封装代码
package com.imooc.miaosha_idea.result;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
/**
* @Author: judy
* @Description:
* @Date: Created in 9:14 2019/2/21
*/
@Data
@Slf4j
public class Result<T> {
private Integer code;
private T data;
private String message;
private Result(T data) {
this.code = 0;
this.data = data;
this.message= message;
}
private Result(CodeMsg codeMsg) {
this.message=codeMsg.getMsg();
this.code=codeMsg.getCode();
}
//通过构造方法只需要传data就可以
public static <T>Result<T> success( T data ){
return new Result<>(data);
}
// 这里使用codeMsg 是因为返回结果的是code码不是固定的
public static <T>Result<T> error(CodeMsg codeMsg){
if (codeMsg == null) {
log.warn("codeMsg is null");
return null;
}
return new Result<T>(codeMsg);
}
}
@Data
public class CodeMsg{
private Integer code;
private String msg;
//使用static的原因是因为直接使用
public static CodeMsg SUCCESS = new CodeMsg(0,"success");
public static CodeMsg SERVER_ERROR = new CodeMsg(500100,"服务端异常");
private CodeMsg(int code, String msg) {
this.code=code;
this.msg=msg;
}
}
@RequestMapping("judy")
public String judy(Model model){
model.addAttribute("name","judy");
return "hello";
}