Java封装统一返回结果集

此封装返回结果集主要包括:状态码、结果描述、数据。可根据结果调用对应的结果集方法返回,返回数据中可以为任意类型的数据。

一、统计返回结果集

import com.fasterxml.jackson.annotation.JsonIgnore;
import java.io.Serializable;

//静态导入枚举类
import static com.yf.common.Response.ResultEnum.*;

public class MyResult<T> implements Serializable {

    private static final long serialVersionUID = 4580737268023862568L;

    private Integer code;

    private String msg;

    private T data;

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer 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;
    }


    public MyResult() {
    }
    public MyResult(Integer code){
        this.code = code;
    }

    //是否成功(自定义结果码为1000为成功)
    @JsonIgnore
    public boolean isSuccess(){
        return this.code == 1000;
    }


    //成功时引用

    public static <T> MyResult<T> success(){
        return success(YF_0000);
    }
    public static <T> MyResult<T> success(T data){
        return success(YF_0000,data);
    }
    public static <T> MyResult<T> success(ResultEnum re){
        return success(re,null);
    }
    public static <T> MyResult<T> success(ResultEnum re,T data){
        Integer code = re.getCode();
        String msg = re.getMsg();
        return success(code,msg,data);
    }
    public static <T> MyResult<T> success(Integer code, String msg, T data){
        MyResult<T> result = new MyResult<>(1000);
        result.setCode(code);
        result.setMsg(msg);
        result.setData(data);
        return result;
    }



    //失败时引用

    public static <T> MyResult<T> fail(){
        return fail(YF_9999);
    }
    public static <T> MyResult<T> fail(ResultEnum re){
        return fail(re,null);
    }
    public static <T> MyResult<T> fail(String msg){
        return fail(YF_9999.getCode(),msg,null);
    }
    public static <T> MyResult<T> fail(T data){
        return fail(YF_9999,data);
    }
    public static <T> MyResult<T> fail(ResultEnum re, T data){
        Integer code = re.getCode();
        String msg = re.getMsg();
        return fail(code,msg,data);
    }
    public static <T> MyResult<T> fail(Integer code , String msg, T data){
        MyResult<T> result = new MyResult<>();
        result.setCode(code);
        result.setMsg(msg);
        result.setData(data);
        return result;
    }


}

二、定义枚举类

public enum  ResultEnum {

    YF_0000(1000, "成功"),

    WAITING_IN_LINE(30013, "正在排队中"),
    YF_9999(9999,"系统异常");


    private Integer code;
    private String msg;

    ResultEnum(Integer code , String msg){
        this.code = code;
        this.msg = msg;
    }

    public Integer getCode() {
        return code;
    }

    public String getMsg() {
        return msg;
    }


}

三、示例

    @ApiOperation(value = "用户登录",notes = "用户登录")
    @PostMapping(path = "/login")
    public MyResult userLogin(@RequestBody UserInfo user1){

        //业务层获取用户信息
        UserInfo info = userInfoService.userLogin(user1);
        
        //成功返回
        return MyResult.success(info);
    }

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中,我们经常需要对方法的返回结果进行封装,以便在调用端能够方便地处理返回结果。这样做可以提高代码的可读性和可维护性。一种常见的做法是使用Java的泛型机制,定义一个统一返回结果类,如下所示: ``` public class Result<T> { private int code; private String message; private T data; // 省略构造器和getter/setter方法 // 静态工厂方法,表示成功的返回结果 public static <T> Result<T> success(T data) { Result<T> result = new Result<>(); result.setCode(200); result.setMessage("success"); result.setData(data); return result; } // 静态工厂方法,表示失败的返回结果 public static <T> Result<T> failure(int code, String message) { Result<T> result = new Result<>(); result.setCode(code); result.setMessage(message); return result; } } ``` 在这个类中,我们定义了三个字段:code、message和data,分别表示返回结果的状态码、状态消息和返回数据。我们还定义了两个静态工厂方法,分别表示成功的返回结果和失败的返回结果。 使用这个类,我们可以在方法中返回一个Result类型的对象,表示方法的执行结果: ``` public Result<User> getUserById(int id) { User user = userDao.getUserById(id); if (user != null) { return Result.success(user); } else { return Result.failure(404, "User not found"); } } ``` 在调用端,我们可以通过判断返回结果的状态码来判断方法是否执行成功,并通过获取返回结果的数据来获取方法执行的结果: ``` Result<User> result = userService.getUserById(id); if (result.getCode() == 200) { User user = result.getData(); // 处理成功的情况 } else { String message = result.getMessage(); // 处理失败的情况 } ``` 这样,我们就可以通过一个统一返回结果类来封装方法的返回结果,提高代码的可读性和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值