基于SpringBoot封装通用返回结果类

news/2024/11/24 2:03:18/

为了规范返回结果,保证返回结果风格统一,提高编码效率与前端调试效率,封装通用返回结果类、通用分页结果类。
本文还提供了简单的使用示例和源代码。

系列文章指路👉

系列文章-基于SpringBoot3创建项目并配置常用的工具和一些常用的类

文章目录

  • 1. 封装结果枚举
  • 2. 封装通用的返回结果
    • 结构
    • 构造方法
    • 常用的静态方法
  • 3. 封装通用分页结果
    • 结构
    • 使用
  • 4. 源码:
    • BaseResult
    • PageResult

1. 封装结果枚举

使用了Lombok,可以根据业务自由扩展

@Getter
public enum ResultEnum {SUCCESS(200,"请求成功"),FAILED(300, "请求失败");public final int code;public final String message;ResultEnum(int code, String message){this.code=code;this.message=message;}
}

2. 封装通用的返回结果

源代码见文末 BaseResult

结构

返回结果包含int codeString messageT data

构造方法

  • 仅返回编码和消息,不附加数据: public BaseResult(int code, String message)
  • 使用枚举,不附加数据:public BaseResult(ResultEnum resultEnum)
  • 返回编码和消息,附加数据:public BaseResult(int code, String message, T data)
  • 使用枚举,附加数据:public BaseResult(ResultEnum resultEnum, T data)

常用的静态方法

使用上述的构造方法可以满足100%需求,除此之外提供一些常用的静态方法,简化代码,提高开发效率。
📢对于静态方法覆盖不到的返回方式(例如既返回失败信息又想附带数据),可以使用构造方法,也可以根据业务使用频率扩展静态方法。

成功的操作通常分为两种:

  • 仅返回成功枚举中的code和message,不附带数据的,例如:修改成功、上架成功等: public static BaseResult<?> success()
  • 附带结果集,例如:列表查询、单条查询等:public static <T> BaseResult<?> success(T data)

失败的操作:

  • 仅返回失败枚举中的code和message:public static BaseResult<?> fail()
  • 多数情况下,需要将失败信息返回,提示失败原因:public static BaseResult<?> fail(String message)

3. 封装通用分页结果

源代码见文末 PageResult

结构

总记录数long total,当前页数据列表T records

使用

前端传入{offset、limit}或者{pageNum、pageSize}二者任选。
后端组织分页结果后放入通用的结果中。

    @GetMapping("/pageQuery")@Operation(summary = "pageQuery", description = "分页查询")public Object pageQuery(@RequestParam(defaultValue = "0", value = "offset") int offset,@RequestParam(defaultValue = "10", value = "limit") int limit) {PageHelper.offsetPage(offset,limit);List<Fruit> fruits = fruitService.list();PageInfo<Fruit> page = new PageInfo<>(fruits);PageResult<List<Fruit>> pageRes = new PageResult<>(page.getTotal(), fruits);return BaseResult.success(pageRes);}

4. 源码:

BaseResult

@Tag(name = "BaseResult", description = "通用返回结果")
@Data
public class BaseResult<T> {@Schema(description = "返回编码")public int code;@Schema(description = "返回信息")public String message;@Schema(description = "返回数据")public T data;private BaseResult() {}public BaseResult(int code, String message) {this.code = code;this.message = message;}public BaseResult(ResultEnum resultEnum) {this.code = resultEnum.getCode();this.message = resultEnum.getMessage();}public BaseResult(int code, String message, T data) {this.code = code;this.message = message;this.data = data;}public BaseResult(ResultEnum resultEnum, T data) {this.code = resultEnum.getCode();this.message = resultEnum.getMessage();this.data = data;}/*** 默认形式,无返回数据成功* @return BaseResult*/public static BaseResult<?> success() {return new BaseResult<>(ResultEnum.SUCCESS);}/*** 附带数据的成功* @param data 数据* @return BaseResult*/public static <T> BaseResult<?> success(T data) {return new BaseResult<>(ResultEnum.SUCCESS,data);}/*** 默认形式,无返回数据失败* @return BaseResult*/public static BaseResult<?> fail() {return new BaseResult<>(ResultEnum.FAILED);}/*** 携带信息,返回失败* @param message 失败信息* @return BaseResult*/public static BaseResult<?> fail(String message) {return new BaseResult<>(ResultEnum.FAILED.code,message);}
}

PageResult

@Tag(name = "PageResult", description = "分页返回结果")
@Data
public class PageResult <T> {@Schema(description = "总记录数")public long total;@Schema(description = "数据列表")public T records;public PageResult() {this.total = 0L;this.records = null;}public PageResult(long total, T records) {this.total = total;this.records = records;}
}

http://www.ppmy.cn/news/493010.html

相关文章

华为机试HJ100

HJ100 等差数列 法一 通项公式&#xff1a; ana1(n−1)d 前n项和&#xff1a; Snn(a1an)/2 import java.util.*;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();int first 2, last n * 3 - 1;int su…

一款支持TSN、5G、5路“原生千兆网口”的工业核心板——TI AM64x

在经过3个月的硬件功能测试、硬件性能测试、软件稳定性测试、3000次启动测试、振动测试、老化测试、高低温测试(-40℃~+85℃)等验证工作后,创龙科技基于TI 最新16nm处理器AM64x设计的SOM-TL64x工业核心板、TL64x-EVM工业评估板正式对外发售! 作为国内首家推出的AM64x工业处理…

海思HI3516系列平台移植4G模块----以ME909S-821为例

以下以HI3516DV300 ME909S-821 为例演示如何在海思平台上移植4G模块。 本文参考了&#xff1a;linux4.1.4上移植ME909s-821,MU609 4G模块驱动 4G模块的移植分为两部分&#xff0c;一是USB网络驱动的移植&#xff0c;二是USB模拟串口驱动移植。 很幸运&#xff0c;这些驱动在a…

A100 MIG 使用说明

A100 MIG 使用说明 官方手册 阅读约定 美元符号 “$” 号开头的黄色标注&#xff0c;表示一个命令行界面的命令。 前提条件 当需要在支持 MIG 模式的 GPU 中开启 MIG&#xff0c;则需要满足以下前提条件和最低的软件版本&#xff1a; MIG 仅在 A100 与 H100上支持&#xf…

当电脑中已经装了打印机驱动时,想再连接同型号的另一台打印机

如题&#xff0c;此时不再需要装驱动了&#xff0c;直接按照如下步骤添加打印机&#xff1a; 1、开始菜单 2、设备和打印机 3、添加打印机 4、添加网络、无线或Bluetooth打印机&#xff08;W&#xff09; 5、我需要的打印机不在列表中 6、使用TCP/IP地址或主机名添加打印…

如何连接打印机?

连接打印机的俩种方法&#xff0c;对号入座 第一种&#xff1a; 打印机没有连接其它电脑&#xff0c;把打印机的use接口连接电脑主机&#xff0c;打开控制面板 点击查看设备和打印机 查看你打印机的有没有在上面 然后查看打印机的属性&#xff0c;还有型号 通过这个型号去打…

斑马zebra大打印机 110Xi4 型号 串口连接无法识别问题

斑马zebra大打印机 110Xi4 型号 串口连接无法识别,而USB线可以连接识别 解决:使用直连线没有效果,通过使用一公一母的交叉线连接,即可识别.

关于同步开关电源和异步开关电源

关于同步开关电源和异步开关电源&#xff0c;关于同步开关电源和非同步开关电源&#xff0c;关于开关电源同步和异步&#xff0c;关于开关电源同步和非同步&#xff0c;关于开关电源同步升压和异步升压&#xff0c;关于开关电源同步升压和非同步升压&#xff0c;如下图所示&…