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);
    }
}
目录
相关文章
|
11月前
|
JSON Java 数据格式
springboot全局异常处理器
springboot全局异常处理器
44 0
|
安全 Java Spring
SpringBoot整合Spring Security,自定义登录成功/失败处理器,配置登录人数(三)
一般采用的是实现接口的方式:implements AuthenticationSuccessHandler 但是如果想要实现登录成功后跳转回登录前的页面可以直接继承SavedRequestAwareAuthenticationSuccessHandler这个类,该类的父类SimpleUrlAuthenticationSuccessHandler实现了AuthenticationSuccessHandler。
297 0
|
安全 Java 微服务
SpringBoot 中如何优雅地处理异常,包括异常处理机制、全局异常处理器、自定义异常?
SpringBoot 中如何优雅地处理异常,包括异常处理机制、全局异常处理器、自定义异常?
286 0
|
JSON 前端开发 Java
基于Springboot外卖系统06: 新增员工功能+全局异常处理器
当填写完表单信息, 点击"保存"按钮后, 会提交该表单的数据到服务端, 在服务端中需要接受数据, 然后将数据保存至数据库中。
137 0
|
Java Maven Spring
SpringBoot中的自定义注解开发与注解处理器
使用AnnotatedElement接口中的方法提取注解中的数据,像Class/Constructor/Field/Method/Package这些类都实现了AnnotatedElement接口 注:只有当定义Annotation时使用了@Retention(RetentionPolicy.RUNTIME)修饰, JVM才会在装载class文件时提取保存在class文件中的Annotation,该Annotation才会在运行时可见,这样我们才能够解析
|
JSON Java 数据格式
SpringBoot统一结果集封装
统一的返回格式更加有利于接口的返回与扩展,值得推荐!
564 0
|
前端开发 JavaScript
SpringBoot+MyBatisPlus+Vue 前后端分离项目快速搭建【前端篇】【快速生成后端代码、封装结果集、增删改查、模糊查找】【毕设基础框架】
SpringBoot+MyBatisPlus+Vue 前后端分离项目快速搭建【前端篇】【快速生成后端代码、封装结果集、增删改查、模糊查找】【毕设基础框架】
SpringBoot+MyBatisPlus+Vue 前后端分离项目快速搭建【前端篇】【快速生成后端代码、封装结果集、增删改查、模糊查找】【毕设基础框架】
|
前端开发 Java 数据库连接
SpringBoot+MyBatisPlus+Vue 前后端分离项目快速搭建【后端篇】【快速生成后端代码、封装结果集、增删改查、模糊查找】【毕设基础框架】
SpringBoot+MyBatisPlus+Vue 前后端分离项目快速搭建【后端篇】【快速生成后端代码、封装结果集、增删改查、模糊查找】【毕设基础框架】
SpringBoot+MyBatisPlus+Vue 前后端分离项目快速搭建【后端篇】【快速生成后端代码、封装结果集、增删改查、模糊查找】【毕设基础框架】
|
16天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的服装商城管理系统
基于Java+Springboot+Vue开发的服装商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的服装商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
48 2
基于Java+Springboot+Vue开发的服装商城管理系统
|
16天前
|
前端开发 JavaScript Java
SpringBoot项目部署打包好的React、Vue项目刷新报错404
本文讨论了在SpringBoot项目中部署React或Vue打包好的前端项目时,刷新页面导致404错误的问题,并提供了两种解决方案:一是在SpringBoot启动类中配置错误页面重定向到index.html,二是将前端路由改为hash模式以避免刷新问题。
72 1