基于Java編寫(xiě)一個(gè)通用返回工具類Result
前言
Java項(xiàng)目搭建時(shí),常常需要去封裝一個(gè)通用型的Result工具類,下面就是我自己封裝的常用的返回類,可以直接使用。(有部分Swagger注解,使用時(shí)可忽略)
第一步、創(chuàng)建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 = "響應(yīng)信息體")
public class ResultUtils<T> implements Serializable {
/**
* 響應(yīng)碼
*/
@Getter
@Setter
@ApiModelProperty(value = "響應(yīng)標(biāo)記:成功標(biāo)記=0,失敗1")
private Integer code;
/**
* 響應(yīng)信息
*/
@Getter
@Setter
@ApiModelProperty(value = "響應(yīng)信息")
private String message;
/**
* 響應(yīng)數(shù)據(jù)
*/
@Getter
@Setter
@ApiModelProperty(value = "響應(yīng)數(shù)據(jù)")
private T data;
@Getter
@Setter
@ApiModelProperty(value = "返回狀態(tài)")
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;
}
/**
* 無(wú)數(shù)據(jù)成功返回
*
* @return
*/
public static <T>ResultUtils success(){
return new ResultUtils<T>(ResultCode.SUCCESS.getCode(),ResultCode.SUCCESS.getMessage(),null,true);
}
/**
* 帶數(shù)據(jù)返回
*/
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 + "]";
}
}第二步 創(chuàng)建常用的報(bào)錯(cuò)信息類
在日常開(kāi)發(fā)中可不寫(xiě),將ReusltUtils中的ResultCode的代碼換成常量即可
注:主要是為了美觀以及修改方便,所以去單獨(dú)的封裝一個(gè)常量信息類
/**
* @author ProsperousEnding-fhl
* @create 2023-07-20-15:46
*/
@Getter
public enum ResultCode {
/**
* 成功
*/
SUCCESS(200, "成功"),
FAIL(1000, "失敗"),
FAILED(400, "請(qǐng)求失敗"),
NOT_FOUND(404, "未找到"),
SERVER_ERROR(500, " 服務(wù)器內(nèi)部出錯(cuò) "),
/**
* 錯(cuò)誤參數(shù)
*/
PARAM_IS_INVALID(1001, "參數(shù)無(wú)效"),
PARAM_IS_BLANK(1002, "參為空"),
PARAM_TYPE_ERROR(1003, "參數(shù)類型錯(cuò)誤"),
PARAM_NOT_COMPLETE(1004, "參數(shù)缺失"),
/**
* 用戶錯(cuò)誤
*/
USER_NOT_LOGIN_IN(2001, "用戶未登錄"),
USER_LOGIN_ERROR(2002, "賬號(hào)不存在或者密碼錯(cuò)誤"),
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;
}
}第三步、調(diào)用方法以及返回樣式
調(diào)用方式:
使用時(shí)可以直接使用ResultUtils.方法的方式
public Result getUser() {
User user1=new User();
user1.setName("codeTalker")
return Result.success(user1);
}返回樣式:
{
"code": 200,
"message": "成功",
"data":{
"name":"codeTalker"
}
"status": true
}以上就是基于Java編寫(xiě)一個(gè)通用返回工具類Result的詳細(xì)內(nèi)容,更多關(guān)于Java通用返回工具類的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
服務(wù)注冊(cè)不上nacos問(wèn)題排查及解決過(guò)程
這篇文章主要介紹了服務(wù)注冊(cè)不上nacos問(wèn)題排查及解決過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-10-10
redis.clients.jedis.exceptions.JedisMovedDataException異常解決
redis.clients.jedis.exceptions.JedisMovedDataException?異常是在使用?Jedis?客戶端與?Redis?集群進(jìn)行交互時(shí)發(fā)生的,下面就來(lái)介紹一下解決方法,感興趣的可以了解一下2024-05-05
分享40個(gè)Java多線程問(wèn)題小結(jié)
多個(gè)線程共存于同一JVM進(jìn)程里面,所以共用相同的內(nèi)存空間,較之多進(jìn)程,多線程之間的通信更輕量級(jí),本文給大家分享40個(gè)Java多線程問(wèn)題小結(jié) 的相關(guān)資料,需要的朋友可以參考下2015-12-12
Java 中synchronize函數(shù)的實(shí)例詳解
這篇文章主要介紹了Java 中synchronize函數(shù)的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家理解使用synchronize函數(shù)的使用方法,需要的朋友可以參考下2017-09-09
SpringBoot整合HikariCP數(shù)據(jù)庫(kù)連接池方式
這篇文章主要介紹了SpringBoot整合HikariCP數(shù)據(jù)庫(kù)連接池方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
基于Nacos實(shí)現(xiàn)動(dòng)態(tài)線程池的設(shè)計(jì)與實(shí)踐分享
在分布式系統(tǒng)架構(gòu)中,線程池是資源調(diào)度的重要工具,傳統(tǒng)固定參數(shù)的線程池在流量平穩(wěn)的場(chǎng)景下表現(xiàn)良好,但面對(duì)現(xiàn)代互聯(lián)網(wǎng)業(yè)務(wù)的潮汐流量特征時(shí),往往會(huì)出現(xiàn)資源浪費(fèi)或處理能力不足的問(wèn)題,所以本文將介紹基于Nacos實(shí)現(xiàn)動(dòng)態(tài)線程池的設(shè)計(jì)與實(shí)踐,需要的朋友可以參考下2025-05-05
Java學(xué)習(xí)-打印1-1000以內(nèi)的水仙花數(shù)代碼實(shí)例
這篇文章主要介紹了Java打印1-1000以內(nèi)的水仙花數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
教大家使用java實(shí)現(xiàn)頂一下踩一下功能
這篇文章主要教大家如何使用java實(shí)現(xiàn)頂一下踩一下功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02

