首页 > 其他分享 >统一结果封装

统一结果封装

时间:2024-03-27 22:12:31浏览次数:24  
标签:code 封装 结果 OK Code Result Integer public 统一

1、Result

一般来说,增删改返回boolean,查询返回对象或集合,还有其他类型的返回数据,前段解析数据比较麻烦,需要返回一个统一的数据结果

统一数据返回结果类:

  1. data:封装数据(各种类型的,例如boolean、null、json等)
  2. code:封装操作类型与是否成功,可以使用枚举类
  3. msg:封装特殊信息(操作失败返回的错误信息等)
public class Result{
	private Object data;
	private Integer code;
	private String msg;
}

2、案例

public class Result {
    //描述统一格式中的数据
    private Object data;
    //描述统一格式中的编码,用于区分操作,可以简化配置0或1表示成功失败
    private Integer code;
    //描述统一格式中的消息,可选属性
    private String msg;

    public Result() {
    }
	//构造方法是方便对象的创建
    public Result(Integer code,Object data) {
        this.data = data;
        this.code = code;
    }
	//构造方法是方便对象的创建
    public Result(Integer code, Object data, String msg) {
        this.data = data;
        this.code = code;
        this.msg = msg;
    }
	//setter...getter...省略
}

定义返回码Code类:code类中的常量设计也不是固定的,可以根据需要自行增减,例如将查询再进行细分为GET_OK,GET_ALL_OK,GET_PAGE_OK等。

//状态码
public class Code {
    public static final Integer SAVE_OK = 20011;
    public static final Integer DELETE_OK = 20021;
    public static final Integer UPDATE_OK = 20031;
    public static final Integer GET_OK = 20041;

    public static final Integer SAVE_ERR = 20010;
    public static final Integer DELETE_ERR = 20020;
    public static final Integer UPDATE_ERR = 20030;
    public static final Integer GET_ERR = 20040;
}

前端根据返回的结果,先从中获取code,根据code判断,如果成功则取data属性的值,如果失败,则取msg中的值做提示。

@RestController
@RequestMapping("/books")
public class BookController {
    @Autowired
    private BookService bookService;

    @PostMapping
    public Result save(@RequestBody Book book) {
        boolean flag = bookService.save(book);
        return new Result(flag ? Code.SAVE_OK:Code.SAVE_ERR,flag);
    }

    @PutMapping
    public Result update(@RequestBody Book book) {
        boolean flag = bookService.update(book);
        return new Result(flag ? Code.UPDATE_OK:Code.UPDATE_ERR,flag);
    }

    @DeleteMapping("/{id}")
    public Result delete(@PathVariable Integer id) {
        boolean flag = bookService.delete(id);
        return new Result(flag ? Code.DELETE_OK:Code.DELETE_ERR,flag);
    }

    @GetMapping("/{id}")
    public Result getById(@PathVariable Integer id) {
        Book book = bookService.getById(id);
        Integer code = book != null ? Code.GET_OK : Code.GET_ERR;
        String msg = book != null ? "" : "数据查询失败,请重试!";
        return new Result(code,book,msg);
    }

    @GetMapping
    public Result getAll() {
        List<Book> bookList = bookService.getAll();
        Integer code = bookList != null ? Code.GET_OK : Code.GET_ERR;
        String msg = bookList != null ? "" : "数据查询失败,请重试!";
        return new Result(code,bookList,msg);
    }
}

标签:code,封装,结果,OK,Code,Result,Integer,public,统一
From: https://www.cnblogs.com/lm02/p/18100392

相关文章

  • ABP构建统一订单系统(商品、支付、订单)一
    构建思路:1、采用平台统一下单支付(优点:不需要自己写商品一系列东西和配置麻烦的支付)2、采用平台统一下单自己配置支付(优点:不需要自己写商品一系列东西;缺点:需要自己配置支付)3、采用平台下单支付自己配置商品信息(优点:不需要自己去配置支付、统计订单信息、对账;缺点:需要自己编......
  • 封装组合式函数
    封装组件importtype{XtxGuessInstance}from'@/types/components'import{ref}from'vue'/**猜你喜欢组合式函数*/exportconstuseGuessList=()=>{//获取猜你喜欢组件实例constguessRef=ref()//滚动触底事件constonScrolltolower=()=>{guess......
  • 封装之打线简介
    https://developer.aliyun.com/article/7403181.Wire bond原理:对金属丝和压焊点同时加热和超声波,接触面便产生塑性变形,并破坏了界面的氧化膜,使其活性化,通过接触面两金属之间的相互扩散,形成金属化合物而完成连接。2.常用线材:金线,Ag合金线,钯铜线,纯铜线。基于0.8mil,20um各种......
  • FFMPEG C++封装(一)(C++ FFMPEG)
    1概述FFMPEG是一个C语言开源视音频编解码库。本文将FFMPG4.1.3进行C++封装,形成C++FFMPG库。2架构架构图如下所示:架构说明:Init初始化FFMPEG库。IStream输入流,FFMPEG的输入音视频文件。Packet音视频数据包Decoder音视频编码器Frame音视频帧FilterGraph音视频......
  • java的封装
    封装概述    java中的封装指的是将一系列有关的事物的共同属性和行为提取出来放到一个类中,隐藏对象的实行和现实细节,仅对外提供公共的访问方式的操作。这样说起来感觉很抽象,也不好理解,这里不妨举一个例子。将配置电脑这个动作看成封装。    这个要怎么理解呢......
  • php:页面链接数据库(封装),其他页面引入方法
    数据库连接get_db_conn.php//创建连接$conn=mysqli_connect($servername,$username,$password,$dbname);<?php//数据库连接参数define('DB_SERVER','localhost');//数据库服务器的地址define('DB_USERNAME','root');//数据库账户define(......
  • TypeScript日期方法封装
    TypeScript日期方法封装1.获取当前日期,格式YYYY-MM-DD2.获取当前时间,格式YYYY-MM-DDHH:mm:ss3.返回一年的总天数4.返回日期是当年第多少天5.返回时间范围的所有周末6.返回该日期的周末日期7.返回时间范围的各个月份的总天数8.返回日期范围内所有周末,一级前......
  • 【Azure Service Bus】启用诊断日志来获取客户端访问Azure Service Bus的IP地址 [2024
    问题描述在使用ServiceBus中,遇见了莫名奇妙,不知来源的访问,但是又不敢直接修改AccessKey(担心影响正常业务),所以想通过访问服务的客户端IP地址来分析,到底是那里的客户端在访问ServiceBus服务? 问题解答经过调查,可以通过开启AzureServiceBus的诊断日志来实现此目的。......
  • 基于 Vue3 + Element-plus 封装的 Table 组件
    项目信息项目名称:vue3-xmw-table预览地址:点击预览Github:vue3-element-table使用方法根目录下执行npmivue3-xmw-table命令npmivue3-xmw-table全局挂载组件import{createApp}from'vue'importAppfrom'./App.vue'importXmwtablefrom'vue3-xmw-table'......
  • 还写那么多函数?js简单封装,拿去用吧
    ;(function($){ varwprtTheme={ //Maininitfunction init:function(){ this.config(); this.events(); }, //Definevarsforcaching config:function(){ ......