Java工具类Result

Java工具类Result

Result:(下面写了两种Result类的编写方式,这两种的使用方法在最后面),最主要的功能就是为了向前端发送数据的时候能够更高效快捷,编写代码如下:

首先编写一个枚举类
/**
 * @创建人 zengyuqiang
 * @创建时间 2022/6/24
 * @描述
 */
public enum Status {
    OK(200,"请求成功"),
    SYSTEM_ERROR(101,"系统异常"),
    SQL_ERROR(109,"SQL语句异常");
    ;
    //状态码
    private Integer code;
    //错误信息
    private String message;
    //构造器
    Status(Integer code,String message){
        this.code=code;
        this.message=message;
    }
    //只需要添加get方法就行
    public Integer getCode() {
        return code;
    }
    public String getMessage() {
        return message;
    }

    @Override
    public String toString() {
        return code+":"+message;
    }
}
Result类编写方式一:
/**
 * @创建人 zengyuqiang
 * @创建时间 2022/6/24
 * @描述
 */
public class R<T> {
    //状态码
    private Integer status;
    //错误的状态信息
    private String message;
    //数据
    private T data;

    //get方法:获取状态码
    public Integer getStatus() {
        return status;
    }
    //get方法:获取错误状态信息
    public String getMessage() {
        return message;
    }
    //get方法:获取数据内容
    public T getData() {
        return data;
    }
    /**
     * 构造器(私有化),这里写了3个构造器。根据实际发开需要添加即可
     */
    private R(Integer status,String message,T data){
        this.status=status;
        this.message=message;
        this.data=data;
    }
    private R(Integer status,String message){
        this.status=status;
        this.message=message;
    }
    private R(String message){
        this.message=message;
    }
    
    //下面就是根据需要返回不同参数格式的方法
    /**
     * 返回《状态码》《状态信息》《数据》
     * 状态码来自--->>枚举
     * 状态信息来自--->>开发人员
     * 数据来自--->>开发人员
     */
    public static <T> R<T> buildR(Status status,String message,T data){
        return new R<T>(status.getCode(),message,data);

    }

    /**
     * 返回《状态码》《状态信息》《状态信息》
     * 状态码来自--->>枚举
     * 状态信息来自--->>开发人员
     */
    public static <T> R<T> buildR(Status status,String message){
        return new R<T>(status.getCode(),message);
    }
    /**
     * 返回《状态码》《状态信息》《数据》
     * 状态码来自--->>枚举
     * 状态信息来自--->>枚举
     * 数据来自--->>开发人员
     */
    public static <T> R<T> buildR(Status status,T data){
        return new R<T>(status.getCode(),status.getMessage(),data);
    }
    /**
     * 返回《状态码》《状态信息》《数据》
     * 状态码来自--->>枚举
     * 状态信息来自--->>枚举
     * 数据来自--->>开发人员
     */
    public static <T> R<T> buildR(Status status){
        return new R<T>(status.getCode(),status.getMessage());
    }
}
Result类编写方式二:
/**
 * @创建人 zengyuqiang
 * @创建时间 2022/6/25
 * @描述
 */

public class R1<T> {
    private static Integer status;//状态码
    private static String message;//错误的的状态信息
    private T data;
    //构造器私有化
    private R1(){};

    //下面的方法,根据开发需求添加即可
    //请求成功调用此方法
    public static R1 OK(){
        R1 r1 = new R1();
        status=Status.OK.getCode();
        message=Status.OK.getMessage();
       return r1;
    }

    //系统异常调用此方法
    public static R1  SYSTEM_ERROR(){
        R1 r1 = new R1();
        status=Status.SYSTEM_ERROR.getCode();
        message=Status.SYSTEM_ERROR.getMessage();
        return r1;
    }

    //SQL语句异常调用此方法
    public static R1  SQL_ERROR(){
        R1 r1 = new R1();
        status=Status.SQL_ERROR.getCode();
        message=Status.SQL_ERROR.getMessage();
        return r1;
    }

    //传数据的方法
    public R1 data(T data){
        this.data= data;
        return this;
    }

    //toString方法
    @Override
    public String toString() {
        return "R1{" +
                "data=" + data +";"+
                "status=" + status +";"+
                "message=" + message +
                '}';
    }

将上面的枚举和工具类Result定义好后,下面就可以使用了

Result类编写方式一的用法:

@Controller
@RequestMapping("/AdsController")
public class AdsController {
    @ResponseBody
    @RequestMapping("/getAdsByType.action")
    public R<Object> getAdsByType(Integer adTypeId) throws SQLException {
         //下面的Object可以是任何类型的数据,也可以是数组或者集合
        return R.buildR(Status.OK,Object);
    }

}

Result类编写方式二的用法:

@Controller
@RequestMapping("/workers")
public class WokeresController {
    @ResponseBody
    @RequestMapping("/getWorkerByGroupPage.action")
    public R1 getWorkerByGroupPage(int currentPage, int size) throws SQLException {
       //R1.OK() --->R1调用方法OK(),表示调用枚举类ok的对象 --->返回的也是一个R1对象;
       //.data()--->这里的意思是上面返回的R1对象调用了方法.data()--->这个时候返回的还是一个R1对象;
       //由于上一行还是返回的R1对象,所以还可以在后面又去调用.data()。以此类推,后面可以无限制调用.data()方法,并且data用泛型修饰,所以可以根据开发需求调用即可对应的个数即可
        return R1.OK().data("集合数据").data("数组数据").data("name=zengyuqiang");
    }
}
  • 7
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值