java定义全局统一返回类

全局统一返回类,可以返回各种实体数据,状态码,成功失败信息等,实现了全局返回值类型统一的功能。

代码很简单,复制拿去用就好。有不少开源项目使用的都是这套全局返回,基本没什么区别。如果有更好的方式或者哪里不规范欢迎指正。

package com.cgh.common.utils;

import org.apache.http.HttpStatus;

import java.util.HashMap;
import java.util.Map;

/**
 * 返回数据
 *
 */
public class R extends HashMap<String, Object> {
	private static final long serialVersionUID = 1L;
	
	public R() {
		put("code", 0);
		put("msg", "success");
	}
	
	public static R error() {
		return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, "未知异常,请联系管理员");
	}
	
	public static R error(String msg) {
		return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, msg);
	}
	
	public static R error(int code, String msg) {
		R r = new R();
		r.put("code", code);
		r.put("msg", msg);
		return r;
	}

	public static R ok(String msg) {
		R r = new R();
		r.put("msg", msg);
		return r;
	}
	
	public static R ok(Map<String, Object> map) {
		R r = new R();
		r.putAll(map);
		return r;
	}
	
	public static R ok() {
		return new R();
	}

	public R put(String key, Object value) {
		super.put(key, value);
		return this;
	}
}

在项目中实际使用场景如下:
(1)返回成功,及数据
java定义全局统一返回类_第1张图片
(2)返回失败,状态码,及错误信息等
java定义全局统一返回类_第2张图片
(3)查询情况下,返回成功,及实体数据
java定义全局统一返回类_第3张图片
(4)修改或删除、保存等,直接返回成功即可。
java定义全局统一返回类_第4张图片

2021.03.17日更:
feign远程调用之后获取的返回值R,需要.get(“data”)中拿到,然后在转成javabean,特别繁琐。如图:
java定义全局统一返回类_第5张图片

java定义全局统一返回类_第6张图片

因此,为解决此问题,特追加泛型,修改的R类完整如下:


package com.atguigu.common.utils;

import org.apache.http.HttpStatus;

import java.util.HashMap;
import java.util.Map;

/**
 * 返回数据
 *
 * @author Mark chengguanghao
 */
public class R extends HashMap, Object> {
	private static final long serialVersionUID = 1L;

	private T data;

    public T getData() {
        return data;
    }

    public void setData(T data){
        this.data = data;
    }
    
    public R() {
		put("code", 0);
		put("msg", "success");
	}
	
	public static R error() {
		return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, "未知异常,请联系管理员");
	}
	
	public static R error(String msg) {
		return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, msg);
	}
	
	public static R error(int code, String msg) {
		R r = new R();
		r.put("code", code);
		r.put("msg", msg);
		return r;
	}

	public static R ok(String msg) {
		R r = new R();
		r.put("msg", msg);
		return r;
	}
	
	public static R ok(Map, Object> map) {
		R r = new R();
		r.putAll(map);
		return r;
	}
	
	public static R ok() {
		return new R();
	}

	public R put(String key, Object value) {
		super.put(key, value);
		return this;
	}
    public Integer getCode(){
        return (Integer) this.get("code");
    }
}

修改完R类之后,调用和返回变的方便了,如下图:
java定义全局统一返回类_第7张图片
java定义全局统一返回类_第8张图片

你可能感兴趣的:(java,java)