Java通用返回工具類Result

2023-07-20 18:00:44

通用返回類Result

前言:Java專案搭建時,常常需要去封裝一個通用型的Result工具類,下面就是我自己封裝的常用的返回類,可以直接使用。(有部分Swagger註解,使用時可忽略

第一步、建立ReusltUtils工具類

package com.code.walker.utils;

import com.code.walker.constant.ResultCode;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;

import java.io.Serializable;

/**
 * @author ProsperousEnding-fhl
 * @create 2023-07-20-15:16
 */
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@ApiModel(value = "響應資訊體")
public class  ResultUtils<T> implements Serializable {

    /**
     * 響應碼
     */
    @Getter
    @Setter
    @ApiModelProperty(value = "響應標記:成功標記=0,失敗1")
    private Integer code;

    /**
     * 響應資訊
     */
    @Getter
    @Setter
    @ApiModelProperty(value = "響應資訊")
    private String message;

    /**
     * 響應資料
     */
    @Getter
    @Setter
    @ApiModelProperty(value = "響應資料")
    private T data;


    @Getter
    @Setter
    @ApiModelProperty(value = "返回狀態")
    private boolean status;


    private ResultUtils(ResultCode resultCode,T data,boolean status){
        this.code = resultCode.getCode();
        this.message = resultCode.getMessage();
        this.data = data;
        this.status=status;
    }

    /**
     * 無資料成功返回
     *
     * @return
     */
    public static  <T>ResultUtils success(){
        return new ResultUtils<T>(ResultCode.SUCCESS.getCode(),ResultCode.SUCCESS.getMessage(),null,true);
    }
    /**
     * 帶資料返回
     */
    public static <T> ResultUtils success(T data){
        return new ResultUtils<T>(ResultCode.SUCCESS.getCode(),ResultCode.SUCCESS.getMessage(),data,true);
    }

    /**
     * 失敗
     */
    public static  <T>ResultUtils fail(){
        return new ResultUtils<T>(ResultCode.FAIL.getCode(),ResultCode.FAIL.getMessage(), null,false);
    }
    /**
     * 失敗
     */
    public static <T> ResultUtils fail(T data){
        return new ResultUtils<T>(ResultCode.FAIL.getCode(),ResultCode.FAIL.getMessage(), data,false);
    }


    @Override
    public String toString() {
        return "ResultUtils [code=" + code + ", message=" + message + ", data=" + data + "]";
    }
}

第二步 建立常用的報錯資訊類(在日常開發中可不寫,將ReusltUtils中的ResultCode的程式碼換成常數即可)

注:主要是為了美觀以及修改方便,所以去單獨的封裝一個常數資訊類

/**
 * @author ProsperousEnding-fhl
 * @create 2023-07-20-15:46
 */

@Getter
public enum ResultCode {
    /**
     * 成功
     */
    SUCCESS(200, "成功"),
    FAIL(1000, "失敗"),
    FAILED(400, "請求失敗"),
    NOT_FOUND(404, "未找到"),
    SERVER_ERROR(500, " 伺服器內部出錯 "),
    /**
     * 錯誤引數
     */
    PARAM_IS_INVALID(1001, "引數無效"),
    PARAM_IS_BLANK(1002, "參為空"),
    PARAM_TYPE_ERROR(1003, "引數型別錯誤"),
    PARAM_NOT_COMPLETE(1004, "引數缺失"),
    /**
     * 使用者錯誤
     */
    USER_NOT_LOGIN_IN(2001, "使用者未登入"),
    USER_LOGIN_ERROR(2002, "賬號不存在或者密碼錯誤"),
    USER_ACCOUNT_FORBIDDEN(2003, "賬戶被禁用"),
    USER_NOT_EXISTS(2004, "使用者不存在"),
    USER_HAS_EXISTED(2005, "使用者已存在");

    /**
     * 程式碼
     */
    private final Integer code;
    /**
     * 資訊
     */
    private final String message;

    private ResultCode(Integer code, String message) {
        this.code = code;
        this.message = message;
    }
}

第三步、呼叫方法以及返回樣式

  1. 呼叫方式:

使用時可以直接使用ResultUtils.方法的方式

   public Result getUser() {
       User user1=new User();
       user1.setName("codeTalker")
        return Result.success(user1);
   }
  1. 返回樣式:
   {
       "code": 200,
       "message": "成功",
       "data":{
           "name":"codeTalker"
       }
       "status": true
   }