之所以需要对结果进行固定格式的封装,是为了让前端更好的接受和处理结果.对数据进行展示.
只需要进行两部操作就够了,封装起来很简单.
1.进行最终结果的封装:
/**
* 输出结果的封装
* 只要get不要set,进行更好的封装
* @param <T>
*/
public class Result<T> {
private int code;
private String msg;
private T data;
private Result(T data){
this.code=0;
this.msg="success";
this.data=data;
}
private Result(CodeMsg mg) {
if (mg==null){
return;
}
this.code=mg.getCode();
this.msg=mg.getMsg();
}
/**
* 成功时
* @param <T>
* @return
*/
public static <T> Result<T> success(T data){
return new Result<T>(data);
}
/**
* 失败
* @param <T>
* @return
*/
public static <T> Result<T> fail(CodeMsg mg){
return new Result<T>(mg);
}
public int getCode() {
return code;
}
public String getMsg() {
return msg;
}
public T getData() {
return data;
}
}
2.进行正确和错误返回结果的封装
/**
* 只要get不要set,进行更好的封装
*/
public class CodeMsg {
private int code;
private String msg;
//通用的异常
public static CodeMsg SUCCESS=new CodeMsg(0,"success");
public static CodeMsg SERVER_ERROR=new CodeMsg(50000,"服务端异常");
public static CodeMsg PASSWORD_EMPTY=new CodeMsg(50001,"密码不能为空");
public static CodeMsg MOBILE_EMPTY=new CodeMsg(50002,"手机号不能为空");
public static CodeMsg MOBILE_ERROR=new CodeMsg(50003,"手机号格式错误");
public static CodeMsg NO_USER = new CodeMsg(50004,"用户不存在");
public static CodeMsg PASSWORD_ERROR = new CodeMsg(50005,"密码错误");
//登陆模块异常....60000
//商品模块...70000
//订单...80000
public CodeMsg fillArgs(Object...args){
int code=this.code;
String message=String.format(this.msg,args);
return new CodeMsg(code,message);
}
private CodeMsg(int code, String msg) {
this.code=code;
this.msg=msg;
}
public int getCode() {
return code;
}
public String getMsg() {
return msg;
}
//注意需要重写toString 方法,不然到前端页面是一个对象的地址....
@Override
public String toString() {
return "CodeMsg{" +
"code=" + code +
", msg='" + msg + '\'' +
'}';
}
}
3.示例
成功的时候,使用success方法,返回任何你想要返回的对象.
Result<Object> 可以使用具体的泛型...
public Result<Object> getMiaoshaPath(MiaoshaUser user, ){
String md5=miaoshaService.createPath(user,goodsIs);
return Result.success(md5);
}
失败时候: 返回具体的错误,需要提前定义好哦.
public Result<Object> miaoshaResult(){
if(user==null){
return Result.fail(CodeMsg.NO_USER);
}
long orderId=miaoshaService.getMiaoshaResult(user.getId(),goodsId);
return Result.success(orderId);
}
就这么简单....
这样就好了,只需要定义好错误码就可以使用了
如果您觉得写得不多, 可以请作者喝一杯咖啡