SpringBoot 统一结果集处理器

简介: SpringBoot 统一结果集处理器

SpringBoot 统一结果集处理器(模板)

HttpResponseEnum

public enum HttpResponseEnum {
    /**
     * 操作成功
     */
    SUCCESS(20000, "操作成功!"),
    /**
     * 没有操作权限
     */
    AUTHORIZED(40003, "没有操作权限!"),
    /**
     * 系统异常
     */
    SYSTEM_ERROR(50000, "系统异常"),
    /**
     * 操作失败
     */
    FAIL(50000, "操作失败!"),
    /**
     * 参数格式不合法
     */
    VALID_ERROR(52000,"参数格式不合法!"),
    /**
     * 用户名已经存在
     */
    USERNAME_EXIST(52001, "用户名已经存在!");

    private final Integer code;
    private final String message;

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

    public Integer getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }
}

第一种方式

ServerResponse

@Data
@Builder
@ApiModel("统一结果集处理类")
@AllArgsConstructor
@NoArgsConstructor
public class ServerResponse {

    @ApiModelProperty(value = "状态码")
    private Integer code;

    @ApiModelProperty(value = "状态")
    private Boolean status;

    @ApiModelProperty(value = "返回消息")
    private String message;

    @ApiModelProperty(value = "数据")
    private Map<String, Object> data;

    /**
     * 访问成功
     *
     * @return ServerResponse
     */
    public static ServerResponse success() {
        return ServerResponse.builder()
                .status(true)
                .code(HttpResponseEnum.SUCCESS.getCode())
                .message(HttpResponseEnum.SUCCESS.getMessage())
                .data(new HashMap<>())
                .build();
    }

    /**
     * 访问失败
     *
     * @return ServerResponse
     */
    public static ServerResponse error() {
        return ServerResponse.builder()
                .status(false)
                .code(HttpResponseEnum.FAIL.getCode())
                .message(HttpResponseEnum.FAIL.getMessage())
                .data(new HashMap<>())
                .build();
    }

    /**
     * 设置消息信息
     *
     * @param message 消息
     * @return ServerResponse
     */
    public ServerResponse message(String message) {
        this.message = message;
        return this;
    }

    /**
     * 设置 状态码 和 信息 (一)
     *
     * @param code    状态码
     * @param message 信息
     * @return ServerResponse
     */
    public ServerResponse codeAndMessage(Integer code, String message) {
        this.code = code;
        this.message = message;
        return this;
    }


    /**
     * 设置 状态码 和 信息 (一)
     *
     * @param httpResponseEnum 枚举信息
     * @return ServerResponse
     */
    public ServerResponse codeAndMessage(HttpResponseEnum httpResponseEnum) {
        this.code = httpResponseEnum.getCode();
        this.message = httpResponseEnum.getMessage();
        return this;
    }

    /**
     * 设置 数据 (一)
     *
     * @param key   key
     * @param value value  ==> Object
     * @return ServerResponse
     */
    public ServerResponse data(String key, Object value) {
        this.data.put(key, value);
        return this;
    }

    /**
     * 设置 数据 (二)
     *
     * @param data Map 集合
     * @return ServerResponse
     */
    public ServerResponse data(Map<String, Object> data) {
        this.data = data;
        return this;
    }
}

第二种方式

ResponseResult

@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("统一结果集处理器")
public class ResponseResult<T> {

    /**
     * 状态码
     */
    @ApiModelProperty(value = "状态码")
    private Integer code;

    /**
     * 状态信息
     */
    @ApiModelProperty(value = "状态信息")
    private Boolean status;

    /**
     * 返回信息
     */
    @ApiModelProperty(value = "返回信息")
    private String message;

    /**
     * 数据
     */
    @ApiModelProperty(value = "数据")
    private T data;

    /**
     *  全参数方法
     * @param code 状态码
     * @param status 状态
     * @param message 返回信息
     * @param data 返回数据
     * @param <T> 泛型
     * @return {@link ResponseResult<T>}
     */
    private static <T> ResponseResult<T> response(Integer code, Boolean status, String message, T data) {
        ResponseResult<T> responseResult = new ResponseResult<>();
        responseResult.setCode(code);
        responseResult.setStatus(status);
        responseResult.setMessage(message);
        responseResult.setData(data);
        return responseResult;
    }

    /**
     *  全参数方法
     * @param code 状态码
     * @param status 状态
     * @param message 返回信息
     * @param <T> 泛型
     * @return {@link ResponseResult<T>}
     */
    private static <T> ResponseResult<T> response(Integer code, Boolean status, String message) {
        ResponseResult<T> responseResult = new ResponseResult<>();
        responseResult.setCode(code);
        responseResult.setStatus(status);
        responseResult.setMessage(message);
        return responseResult;
    }

    /**
     * 成功返回(无参)
     * @param <T> 泛型
     * @return {@link ResponseResult<T>}
     */
    public static <T> ResponseResult<T> success() {
        return response(HttpResponseEnum.SUCCESS.getCode(), true, HttpResponseEnum.SUCCESS.getMessage(), null);
    }

    /**
     * 成功返回(枚举参数)
     * @param httpResponseEnum 枚举参数
     * @param <T> 泛型
     * @return {@link ResponseResult<T>}
     */
    public static <T> ResponseResult<T> success(HttpResponseEnum httpResponseEnum) {
        return response(httpResponseEnum.getCode(), true, httpResponseEnum.getMessage());
    }

    /**
     * 成功返回(状态码+返回信息)
     * @param code 状态码
     * @param message 返回信息
     * @param <T> 泛型
     * @return {@link ResponseResult<T>}
     */
    public static <T> ResponseResult<T> success(Integer code, String message) {
        return response(code, true, message);
    }

    /**
     * 成功返回(返回信息 + 数据)
     * @param message 返回信息
     * @param data 数据
     * @param <T> 泛型
     * @return {@link ResponseResult<T>}
     */
    public static <T> ResponseResult<T> success(String message, T data) {
        return response(HttpResponseEnum.SUCCESS.getCode(), true, message, data);
    }

    /**
     * 成功返回(状态码+返回信息+数据)
     * @param code 状态码
     * @param message 返回信息
     * @param data 数据
     * @param <T> 泛型
     * @return {@link ResponseResult<T>}
     */
    public static <T> ResponseResult<T> success(Integer code, String message, T data) {
        return response(code, true, message, data);
    }

    /**
     * 成功返回(数据)
     * @param data 数据
     * @param <T> 泛型
     * @return {@link ResponseResult<T>}
     */
    public static <T> ResponseResult<T> success(T data) {
        return response(HttpResponseEnum.SUCCESS.getCode(), true, HttpResponseEnum.SUCCESS.getMessage(), data);
    }

    /**
     * 失败返回(无参)
     * @param <T> 泛型
     * @return {@link ResponseResult<T>}
     */
    public static <T> ResponseResult<T> fail() {
        return response(HttpResponseEnum.FAIL.getCode(), false, HttpResponseEnum.FAIL.getMessage(), null);
    }

    /**
     *  失败返回(枚举)
     * @param httpResponseEnum 枚举
     * @param <T> 泛型
     * @return {@link ResponseResult<T>}
     */
    public static <T> ResponseResult<T> fail(HttpResponseEnum httpResponseEnum) {
        return response(httpResponseEnum.getCode(), false, httpResponseEnum.getMessage());
    }

    /**
     *  失败返回(状态码+返回信息)
     * @param code 状态码
     * @param message 返回信息
     * @param <T> 泛型
     * @return {@link ResponseResult<T>}
     */
    public static <T> ResponseResult<T> fail(Integer code, String message) {
        return response(code, false, message);
    }

    /**
     *  失败返回(返回信息+数据)
     * @param message 返回信息
     * @param data 数据
     * @param <T> 泛型
     * @return {@link ResponseResult<T>}
     */
    public static <T> ResponseResult<T> fail(String message, T data) {
        return response(HttpResponseEnum.FAIL.getCode(), false, message, data);
    }

    /**
     *  失败返回(状态码+返回信息+数据)
     * @param code 状态码
     * @param message 返回消息
     * @param data 数据
     * @param <T> 泛型
     * @return {@link ResponseResult<T>}
     */
    public static <T> ResponseResult<T> fail(Integer code, String message, T data) {
        return response(code, false, message, data);
    }

    /**
     *  失败返回(数据)
     * @param data 数据
     * @param <T> 泛型
     * @return {@link ResponseResult<T>}
     */
    public static <T> ResponseResult<T> fail(T data) {
        return response(HttpResponseEnum.FAIL.getCode(), false, HttpResponseEnum.FAIL.getMessage(), data);
    }
}
目录
相关文章
|
JSON Java 数据格式
springboot全局异常处理器
springboot全局异常处理器
47 0
|
安全 Java Spring
SpringBoot整合Spring Security,自定义登录成功/失败处理器,配置登录人数(三)
一般采用的是实现接口的方式:implements AuthenticationSuccessHandler 但是如果想要实现登录成功后跳转回登录前的页面可以直接继承SavedRequestAwareAuthenticationSuccessHandler这个类,该类的父类SimpleUrlAuthenticationSuccessHandler实现了AuthenticationSuccessHandler。
318 0
|
安全 Java 微服务
SpringBoot 中如何优雅地处理异常,包括异常处理机制、全局异常处理器、自定义异常?
SpringBoot 中如何优雅地处理异常,包括异常处理机制、全局异常处理器、自定义异常?
315 0
|
JSON 前端开发 Java
基于Springboot外卖系统06: 新增员工功能+全局异常处理器
当填写完表单信息, 点击"保存"按钮后, 会提交该表单的数据到服务端, 在服务端中需要接受数据, 然后将数据保存至数据库中。
156 0
|
Java Maven Spring
SpringBoot中的自定义注解开发与注解处理器
使用AnnotatedElement接口中的方法提取注解中的数据,像Class/Constructor/Field/Method/Package这些类都实现了AnnotatedElement接口 注:只有当定义Annotation时使用了@Retention(RetentionPolicy.RUNTIME)修饰, JVM才会在装载class文件时提取保存在class文件中的Annotation,该Annotation才会在运行时可见,这样我们才能够解析
|
JSON Java 数据格式
SpringBoot统一结果集封装
统一的返回格式更加有利于接口的返回与扩展,值得推荐!
586 0
|
前端开发 JavaScript
SpringBoot+MyBatisPlus+Vue 前后端分离项目快速搭建【前端篇】【快速生成后端代码、封装结果集、增删改查、模糊查找】【毕设基础框架】
SpringBoot+MyBatisPlus+Vue 前后端分离项目快速搭建【前端篇】【快速生成后端代码、封装结果集、增删改查、模糊查找】【毕设基础框架】
SpringBoot+MyBatisPlus+Vue 前后端分离项目快速搭建【前端篇】【快速生成后端代码、封装结果集、增删改查、模糊查找】【毕设基础框架】
|
前端开发 Java 数据库连接
SpringBoot+MyBatisPlus+Vue 前后端分离项目快速搭建【后端篇】【快速生成后端代码、封装结果集、增删改查、模糊查找】【毕设基础框架】
SpringBoot+MyBatisPlus+Vue 前后端分离项目快速搭建【后端篇】【快速生成后端代码、封装结果集、增删改查、模糊查找】【毕设基础框架】
SpringBoot+MyBatisPlus+Vue 前后端分离项目快速搭建【后端篇】【快速生成后端代码、封装结果集、增删改查、模糊查找】【毕设基础框架】
|
2月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
173 1
|
1月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
111 62