通用返回类Result

前言:Java项目搭建时,常常需要去封装一个通用型的Result工具类,下面就是我自己封装的常用的返回类,可以直接使用。(有部分Swagger注解,使用时可忽略

第一步、创建ReusltUtils工具类

  1. package com.code.walker.utils;
  2. import com.code.walker.constant.ResultCode;
  3. import io.swagger.annotations.ApiModel;
  4. import io.swagger.annotations.ApiModelProperty;
  5. import lombok.*;
  6. import lombok.experimental.Accessors;
  7. import java.io.Serializable;
  8. /**
  9. * @author ProsperousEnding-fhl
  10. * @create 2023-07-20-15:16
  11. */
  12. @Getter
  13. @Setter
  14. @NoArgsConstructor
  15. @AllArgsConstructor
  16. @Accessors(chain = true)
  17. @ApiModel(value = "响应信息体")
  18. public class ResultUtils<T> implements Serializable {
  19. /**
  20. * 响应码
  21. */
  22. @Getter
  23. @Setter
  24. @ApiModelProperty(value = "响应标记:成功标记=0,失败1")
  25. private Integer code;
  26. /**
  27. * 响应信息
  28. */
  29. @Getter
  30. @Setter
  31. @ApiModelProperty(value = "响应信息")
  32. private String message;
  33. /**
  34. * 响应数据
  35. */
  36. @Getter
  37. @Setter
  38. @ApiModelProperty(value = "响应数据")
  39. private T data;
  40. @Getter
  41. @Setter
  42. @ApiModelProperty(value = "返回状态")
  43. private boolean status;
  44. private ResultUtils(ResultCode resultCode,T data,boolean status){
  45. this.code = resultCode.getCode();
  46. this.message = resultCode.getMessage();
  47. this.data = data;
  48. this.status=status;
  49. }
  50. /**
  51. * 无数据成功返回
  52. *
  53. * @return
  54. */
  55. public static <T>ResultUtils success(){
  56. return new ResultUtils<T>(ResultCode.SUCCESS.getCode(),ResultCode.SUCCESS.getMessage(),null,true);
  57. }
  58. /**
  59. * 带数据返回
  60. */
  61. public static <T> ResultUtils success(T data){
  62. return new ResultUtils<T>(ResultCode.SUCCESS.getCode(),ResultCode.SUCCESS.getMessage(),data,true);
  63. }
  64. /**
  65. * 失败
  66. */
  67. public static <T>ResultUtils fail(){
  68. return new ResultUtils<T>(ResultCode.FAIL.getCode(),ResultCode.FAIL.getMessage(), null,false);
  69. }
  70. /**
  71. * 失败
  72. */
  73. public static <T> ResultUtils fail(T data){
  74. return new ResultUtils<T>(ResultCode.FAIL.getCode(),ResultCode.FAIL.getMessage(), data,false);
  75. }
  76. @Override
  77. public String toString() {
  78. return "ResultUtils [code=" + code + ", message=" + message + ", data=" + data + "]";
  79. }
  80. }

第二步 创建常用的报错信息类(在日常开发中可不写,将ReusltUtils中的ResultCode的代码换成常量即可)

注:主要是为了美观以及修改方便,所以去单独的封装一个常量信息类

  1. /**
  2. * @author ProsperousEnding-fhl
  3. * @create 2023-07-20-15:46
  4. */
  5. @Getter
  6. public enum ResultCode {
  7. /**
  8. * 成功
  9. */
  10. SUCCESS(200, "成功"),
  11. FAIL(1000, "失败"),
  12. FAILED(400, "请求失败"),
  13. NOT_FOUND(404, "未找到"),
  14. SERVER_ERROR(500, " 服务器内部出错 "),
  15. /**
  16. * 错误参数
  17. */
  18. PARAM_IS_INVALID(1001, "参数无效"),
  19. PARAM_IS_BLANK(1002, "参为空"),
  20. PARAM_TYPE_ERROR(1003, "参数类型错误"),
  21. PARAM_NOT_COMPLETE(1004, "参数缺失"),
  22. /**
  23. * 用户错误
  24. */
  25. USER_NOT_LOGIN_IN(2001, "用户未登录"),
  26. USER_LOGIN_ERROR(2002, "账号不存在或者密码错误"),
  27. USER_ACCOUNT_FORBIDDEN(2003, "账户被禁用"),
  28. USER_NOT_EXISTS(2004, "用户不存在"),
  29. USER_HAS_EXISTED(2005, "用户已存在");
  30. /**
  31. * 代码
  32. */
  33. private final Integer code;
  34. /**
  35. * 信息
  36. */
  37. private final String message;
  38. private ResultCode(Integer code, String message) {
  39. this.code = code;
  40. this.message = message;
  41. }
  42. }

第三步、调用方法以及返回样式

  1. 调用方式:

使用时可以直接使用ResultUtils.方法的方式

  1. public Result getUser() {
  2. User user1=new User();
  3. user1.setName("codeTalker")
  4. return Result.success(user1);
  5. }
  1. 返回样式:
  1. {
  2. "code": 200,
  3. "message": "成功",
  4. "data":{
  5. "name":"codeTalker"
  6. }
  7. "status": true
  8. }

Java通用返回工具类Result的更多相关文章

  1. Java的各种工具类

    下面是java的各种工具,包括获取时间和时间比较,检验集合和字符串是否为空和长度大小等等 1 import java.io.BufferedReader; import java.io.File; i ...

  2. java格式处理工具类

    import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOExceptio ...

  3. liferay总结的通用的工具类

    在写增删改查的时候,自己动手写了几个通用的工具类,这几个通用的工具类也是基于API写的 第一个是liferay中的分页.跟我们做普通的web开发,分页是一样的首先需要建立一个分页的实体的类 packa ...

  4. Java基础-DButils工具类(QueryRunner)详解

    Java基础-DButils工具类(QueryRunner)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC ...

  5. 一个爬取https和http通用的工具类(JDK自带的URL的用法)

    今天在java爬取天猫的时候因为ssl报错,所以从网上找了一个可以爬取https和http通用的工具类.但是有的时候此工具类爬到的数据不全,此处不得不说python爬虫很厉害. package cn. ...

  6. 免费IP代理池定时维护,封装通用爬虫工具类每次随机更新IP代理池跟UserAgent池,并制作简易流量爬虫

    前言 我们之前的爬虫都是模拟成浏览器后直接爬取,并没有动态设置IP代理以及UserAgent标识,本文记录免费IP代理池定时维护,封装通用爬虫工具类每次随机更新IP代理池跟UserAgent池,并制作 ...

  7. java精确计算工具类

    java精确计算工具类 import java.math.BigDecimal; import java.math.RoundingMode; import java.math.BigDecimal; ...

  8. HttpTool.java(在java tool util工具类中已存在) 暂保留

    HttpTool.java 该类为java源生态的http 请求工具,不依赖第三方jar包 ,即插即用. package kingtool; import java.io.BufferedReader ...

  9. JAVA 8 日期工具类

    JAVA 8 日期工具类 主题描述 JAVA中日期时间的历史 代码成果 主题描述 JAVA的日期时间一直比较混乱,本来以为joda会是巅峰,但是JAVA 8改变了我的思想.但是即便在JAVA 8面前, ...

  10. JavaSE-基础语法(二)-系统类(java.lang.*)和工具类(java.util.*)

    系统类(java.lang.*)和工具类(java.util.*) 一.系统类(java.lang.*) 这个包下包含java语言的核心类,如String.Math.System和Thread类等,使 ...

随机推荐

  1. 基于Java实现数据脱敏

    用法 Jdk版本 大于等于1.8 maven依赖 <dependency> <groupId>red.zyc</groupId> <artifactId> ...

  2. Centos7 开机时遇到initramfs-xxx.img not found错误导致虚拟机无法开启问题处理

    1.背景 一台运行在Esxi上面的VM重启后报initramfs-xxx.img not found错误. 按任意键后出现以下错误. 之前在运维Centos7的时候解决过Kernel panic - ...

  3. 密码学与网安——intro

    Terminology primitive: 原语 (一种不可分割的最基础操作,跟具体的视角和情形有关) 两个时间节点 1949年(1945年):Shannon 提出完全安全性,开始现代密码学 197 ...

  4. python工程师-day83

    1.drf 的用户认证组件 (1)models from django.db import models# Create your models here.class User(models.Mode ...

  5. 浅谈 LIS 问题的几种做法

    LIS 问题也就是最长不下降子序列问题,是一个经典的问题. 做法一 我们发现可以动态规划,设 \(f_i\) 表示前 \(i\) 项包含 \(i\) 的 LIS 长度. 有转移方程: \[f_i=\m ...

  6. SpringBoot 集成 SpringSecurity + MySQL + JWT 附源码,废话不多直接盘

    SpringBoot 集成 SpringSecurity + MySQL + JWT 无太多理论,直接盘 一般用于Web管理系统 可以先看 SpringBoot SpringSecurity 基于内存 ...

  7. CS144 计算机网络 Lab4:TCP Connection

    前言 经过前面几个实验的铺垫,终于到了将他们组合起来的时候了.Lab4 将实现 TCP Connection 功能,内部含有 TCPReceiver 和 TCPSender,可以与 TCP 连接的另一 ...

  8. VueUse 是怎么封装Vue3 Provide/Inject 的?

    Provide/Inject Provide 和 Inject 可以解决 Prop 逐级透传问题.注入值类型不会使注入保持响应性,但注入一个响应式对象,仍然有响应式的效果. Provide 的问题是无 ...

  9. Grafana系列-统一展示-6-Zabbix仪表板

    系列文章 Grafana 系列文章 Notes: 关于 Grafana系列-统一展示-6-Zabbix 数据源, 其实已经在之前的文章: 使用 Grafana 统一监控展示 - 对接 Zabbix 里 ...

  10. 2022-06-23:给定一个非负数组,任意选择数字,使累加和最大且为7的倍数,返回最大累加和。 n比较大,10的5次方。 来自美团。3.26笔试。

    2022-06-23:给定一个非负数组,任意选择数字,使累加和最大且为7的倍数,返回最大累加和. n比较大,10的5次方. 来自美团.3.26笔试. 答案2022-06-23: 要i还是不要i,递归. ...