-
2021-09-19 16:18:31
此封装返回结果集主要包括:状态码、结果描述、数据。可根据结果调用对应的结果集方法返回,返回数据中可以为任意类型的数据。
一、统计返回结果集
import com.fasterxml.jackson.annotation.JsonIgnore; import java.io.Serializable; //静态导入枚举类 import static com.yf.common.Response.ResultEnum.*; public class MyResult<T> implements Serializable { private static final long serialVersionUID = 4580737268023862568L; private Integer code; private String msg; private T data; public Integer getCode() { return code; } public void setCode(Integer code) { this.code = code; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public T getData() { return data; } public void setData(T data) { this.data = data; } public MyResult() { } public MyResult(Integer code){ this.code = code; } //是否成功(自定义结果码为1000为成功) @JsonIgnore public boolean isSuccess(){ return this.code == 1000; } //成功时引用 public static <T> MyResult<T> success(){ return success(YF_0000); } public static <T> MyResult<T> success(T data){ return success(YF_0000,data); } public static <T> MyResult<T> success(ResultEnum re){ return success(re,null); } public static <T> MyResult<T> success(ResultEnum re,T data){ Integer code = re.getCode(); String msg = re.getMsg(); return success(code,msg,data); } public static <T> MyResult<T> success(Integer code, String msg, T data){ MyResult<T> result = new MyResult<>(1000); result.setCode(code); result.setMsg(msg); result.setData(data); return result; } //失败时引用 public static <T> MyResult<T> fail(){ return fail(YF_9999); } public static <T> MyResult<T> fail(ResultEnum re){ return fail(re,null); } public static <T> MyResult<T> fail(String msg){ return fail(YF_9999.getCode(),msg,null); } public static <T> MyResult<T> fail(T data){ return fail(YF_9999,data); } public static <T> MyResult<T> fail(ResultEnum re, T data){ Integer code = re.getCode(); String msg = re.getMsg(); return fail(code,msg,data); } public static <T> MyResult<T> fail(Integer code , String msg, T data){ MyResult<T> result = new MyResult<>(); result.setCode(code); result.setMsg(msg); result.setData(data); return result; } }
二、定义枚举类
public enum ResultEnum { YF_0000(1000, "成功"), YF_9999(9999,"系统异常"); private Integer code; private String msg; ResultEnum(Integer code , String msg){ this.code = code; this.msg = msg; } public Integer getCode() { return code; } public String getMsg() { return msg; } }
三、示例
@ApiOperation(value = "用户登录",notes = "用户登录") @PostMapping(path = "/login") public MyResult userLogin(@RequestBody UserInfo user1){ //业务层获取用户信息 UserInfo info = userInfoService.userLogin(user1); //成功返回 return MyResult.success(info); }
更多相关内容 -
Java 返回结果集统一封装
2021-05-13 15:11:06Java 返回结果集统一封装 对后台数据结果集封装,返回统一格式数据,方便统一管理 R package com.example.demo.common.dto; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import ...Java 返回结果集统一封装
对后台数据结果集封装,返回统一格式数据,方便统一管理
R
package com.example.demo.common.dto; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.example.demo.common.constant.Constants; import java.io.Serializable; /** * 返回前端 数据封闭类 */ public class R implements Serializable { private static final long serialVersionUID = 1L; private Integer code; private String msg; private Object data; private Long total; // 分页信息:总条数 public R() { } private R(int code, String msg, Object data) { this.code = code; this.msg = msg; if (data instanceof Page<?>) { Page<?> page = (Page<?>) data; this.total = page.getTotal(); this.data = page.getRecords(); } else { this.data = data; } } public static R ok() { return new R(Constants.OK_CODE, Constants.OK_MSG, null); } public static R ok(Object data) { return new R(Constants.OK_CODE, Constants.OK_MSG, data); } public static R ok(String msg, Object data) { return new R(Constants.OK_CODE, msg, data); } public static R fail(String msg) { return new R(Constants.FAIL_CODE, msg, null); } public static R fail(int errorCode, String msg) { return new R(errorCode, msg, null); } public int getCode() { return code; } public String getMsg() { return msg; } public void setData(Object data) { this.data = data; } public Object getData() { return data; } public Long getTotal() { return total; } public R setTotal(Long total) { this.total = total; return this; } }
Constants
package com.example.demo.common.constant; /** * 常量类 */ public class Constants { public final static int OK_CODE = 200; public final static int FAIL_CODE = 400; public final static int OTHER_FAIL_CODE = 333; // 其它错误 public final static String OK_MSG = "请求成功"; public final static String FAIL_MSG = "请求失败"; public final static int STATUS_0 = 0; // 可用状态 public final static int STATUS_1 = 1; // 禁用状态 public final static String CACHE_NAME = "KACache"; public final static String XSS_NOTICE_KEY = "notice"; /** * 用户文件上传基础路径 */ public final static String BASE_USER_FILE_PATH = "userFile"; // --------------- 删除标志 start ------------------------------ /** 已删除 */ public static final String ISDELETED = "Y"; /** 未删除 */ public static final String NODELETED = "N"; // --------------- 删除标志 end ------------------------------ }
统一结果集使用
controller
package com.example.demo.module.emp.controller; import com.example.demo.common.dto.R; import com.example.demo.module.emp.entity.Emp; import com.example.demo.module.emp.service.IEmpService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; /** * <p> * 前端控制器 * </p> * * @author xx * @since 2021-05-14 */ @RestController @RequestMapping("/emp") public class EmpController { @Autowired private IEmpService iEmpService; @GetMapping(value = "/data") public List<Emp> all(){ return iEmpService.list(); } @GetMapping(value = "/{id}") public R getById(@PathVariable(value = "id")Integer id){ //返回失败 - 自定义失败提示语 // return R.fail("失败"); //返回失败 - 自定义错误码、提示语 // return R.fail(333,"失败"); //返回成功 - 默认提示语 // return R.ok(); //返回成功 - 带数据data // return R.ok(iEmpService.getById(id)); //返回成功 - 带数据data、自定义提示语 return R.ok("成功",iEmpService.getById(id)); } }
使用 Postman 请求测试
可以看到结果集数据已进行封装,包含了状态码、请求提示信息、返回数据、分页信息。结果集同一封装完成
内容如有帮助,记得点赞哦~
-
Java 统一返回结果集封装
2019-11-27 11:44:34Java 统一返回结果集封装封装实体类调用 封装实体类 /** * 统一返回结果集实体类 * @param <T> 返回数据对象 */ @Data public class ErrorMsg<T> { //错误码 private Integer errorCode; //错误...封装实体类
/** * 统一返回结果集实体类 * @param <T> 返回数据对象 */ @Data public class ErrorMsg<T> { //错误码 private Integer errorCode; //错误信息,一般为前端提示信息 private String errorMsg; //返回值,一般为成功后返回的数据 private T data; //错误详情,一般为失败后的详细原因,如空指针之类的 private String errorDetail; public ErrorMsg() {} public ErrorMsg(Integer errorCode, String errorMsg) { this.errorCode = errorCode; this.errorMsg = errorMsg; } public ErrorMsg(Integer errorCode, String errorMsg, T data) { this.errorCode = errorCode; this.errorMsg = errorMsg; this.data = data; } /** * 配合静态对象直接设置 data 参数 * @param data * @return */ public ErrorMsg setNewData(T data) { ErrorMsg error = new ErrorMsg(); error.setErrorCode(this.errorCode); error.setErrorMsg(this.errorMsg); error.setErrorDetail(this.errorDetail); error.setData(data); return error; } /** * 配合静态对象直接设置 errorMsg 参数 * @param errorMsg * @return */ public ErrorMsg setNewErrorMsg(String errorMsg) { ErrorMsg error = new ErrorMsg(); error.setErrorCode(this.errorCode); error.setErrorMsg(errorMsg); error.setErrorDetail(this.errorDetail); error.setData(this.data); return error; } public static final ErrorMsg SUCCESS = new ErrorMsg(200, "成功"); public static final ErrorMsg INSERT_SUCCESS = new ErrorMsg(200, "新增成功"); public static final ErrorMsg UPDATE_SUCCESS = new ErrorMsg(200, "更新成功"); public static final ErrorMsg DELETE_SUCCESS = new ErrorMsg(200, "删除成功"); public static final ErrorMsg UPLOAD_SUCCESS = new ErrorMsg(200, "上传成功"); public static final ErrorMsg DOWNLOAD_SUCCESS = new ErrorMsg(200, "下载成功"); public static final ErrorMsg LOGIN_SUCCESS = new ErrorMsg(200, "登陆成功"); public static final ErrorMsg LOGOUT_SUCCESS = new ErrorMsg(200, "登出成功"); public static final ErrorMsg LOGIN_ERROR = new ErrorMsg(201, "登陆错误"); public static final ErrorMsg LOGIN_EXPIRE = new ErrorMsg(202, "登陆过期"); public static final ErrorMsg ACCESS_LIMITED = new ErrorMsg(301, "访问受限"); public static final ErrorMsg ARGS_ERROR = new ErrorMsg(501, "参数错误"); public static final ErrorMsg UNKOWN_ERROR = new ErrorMsg(502, "系统异常"); public static final ErrorMsg INSERT_ERROR = new ErrorMsg(503, "新增错误"); public static final ErrorMsg UPDATE_ERROR = new ErrorMsg(504, "更新错误"); public static final ErrorMsg DELETE_ERROR = new ErrorMsg(506, "删除错误"); public static final ErrorMsg UPLOAD_ERROR = new ErrorMsg(507, "上传错误"); public static final ErrorMsg DOWNLOAD_ERROR = new ErrorMsg(508, "下载错误"); public static final ErrorMsg OTHER_SYSTEM_ERROR = new ErrorMsg(509, "调用系统异常"); }
调用
成功返回
return ErrorMsg.SUCCESS;
成功带参返回
return ErrorMsg.SUCCESS.setNewData(list);
错误返回并设定自定义错误信息
return ErrorMsg.LOGIN_ERROR.setNewErrorMsg("用户名或密码不正确");
-
Java返回数据结果统一封装体AjaxResult
2022-01-05 17:01:08一、方法返回数据结果的封装体分析 code:状态码 msg:返回消息(内容) data:数据对象 二、AjaxResult实体类 AjaxResult实体类继承HashMap<String,Object>,方便其构造方法调用父类put()方法,将...一、方法返回数据结果的封装体分析
- code:状态码
- msg:返回消息(内容)
- data:数据对象
二、AjaxResult实体类
AjaxResult实体类继承HashMap<String,Object>,方便其构造方法调用父类put()方法,将需要的内容封装在集合内,即super.put()。
/** * 数据结果封装体 AjaxResult * * @author LBF */ public class AjaxResult extends HashMap<String, Object> { private static final long serialVersionUID = 1L; /** 状态码 */ public static final String CODE_TAG = "code"; /** 返回内容 */ public static final String MSG_TAG = "msg"; /** 数据对象 */ public static final String DATA_TAG = "data"; /** * 初始化一个AjaxResult 对象 */ public AjaxResult() { } /** * 初始化一个AjaxResult 对象 * * @param code 状态码 * @param msg 返回内容 */ public AjaxResult(int code, String msg) { super.put(CODE_TAG, code); super.put(MSG_TAG, msg); } /** * 初始化一个AjaxResult 对象 * * @param code 状态码 * @param msg 返回内容 * @param data 数据对象 */ public AjaxResult(int code, String msg, Object data) { super.put(CODE_TAG, code); super.put(MSG_TAG, msg); if (!(data == null)) { super.put(DATA_TAG, data); } } /** * 返回默认成功消息 * * @return 成功消息 */ public static AjaxResult success() { return AjaxResult.success("操作成功"); } /** * 返回成功消息 * * @param msg 返回内容 * @return 成功消息 */ public static AjaxResult success(String msg) { return AjaxResult.success(msg, null); } /** * 返回成功数据 * @param data 数据对象 * @return */ public static AjaxResult success(Object data) { return AjaxResult.success("操作成功", data); } /** * 初始化一个返回成功消息AjaxResult对象 * * @param msg 返回内容 * @param data 数据对象 * @return 成功消息 */ public static AjaxResult success(String msg, Object data) { return new AjaxResult(HttpStatus.SUCCESS, msg, data); } /** * 返回默认错误消息 * * @return */ public static AjaxResult error() { return AjaxResult.error("操作失败"); } /** * 返回错误消息 * * @param msg 返回内容 * @return 警告消息 */ public static AjaxResult error(String msg) { return AjaxResult.error(msg, null); } /** * 返回错误数据 * * @param code 状态码 * @param msg 返回内容 * @return 警告消息 */ public static AjaxResult error(int code, String msg) { return new AjaxResult(code, msg, null); } /** * 初始化一个返回错误消息AjaxResult对象 * * @param msg 返回内容 * @param data 数据对象 * @return 警告消息 */ public static AjaxResult error(String msg, Object data) { return new AjaxResult(HttpStatus.ERROR, msg, data); } }
三、Code状态码实体类
定义一些常用的返回状态码
/** * 返回HTTP状态码 * * @author LBF */ public class HttpStatus { /** * 操作成功 */ public static final int SUCCESS = 200; /** * 对象创建成功 */ public static final int CREATED = 201; /** * 请求已经被接受 */ public static final int ACCEPTED = 202; /** * 操作已经执行成功,但是没有返回数据 */ public static final int NO_CONTENT = 204; /** * 资源已被移除 */ public static final int MOVED_PERM = 301; /** * 重定向 */ public static final int SEE_OTHER = 303; /** * 资源未被修改 */ public static final int NOT_MODIFIED = 304; /** * 参数列表错误(缺少、格式不匹配) */ public static final int BAD_REQUEST = 400; /** * 未授权 */ public static final int UNAUTHORIZED = 401; /** * 访问受限,授权过期 */ public static final int FORBIDDEN = 403; /** * 资源,服务未找到 */ public static final int NOT_FOUND = 404; /** * 未被允许http方法 */ public static final int BAD_METHOD = 405; /** * 资源冲突,或者资源被锁 */ public static final int CONFLICT = 409; /** * 不支持媒体类型数据 */ public static final int UNSUPPORTED_TYPE = 415; /** * 系统内部错误 */ public static final int ERROR = 500; /** * 未实现相应接口 */ public static final int NOT_IMPLEMENTED = 501; }
四、测试(以返回成功结果为例)
1、返回结果封装体为空时,显示数据格式
/** * 返回数据结果封装体为空 * @return */ @GetMapping("/test") public AjaxResult test(){ return new AjaxResult(); }
2、返回结果封装体非空时,显示数据格式
/** * 返回数据结果封装体非空 * @return */ @GetMapping("/test") public AjaxResult test(){ return AjaxResult.success("测试用例成功","数据对象"); }
-
Java后端统一封装返回结果
2021-02-28 14:33:20Java后端统一封装返回结果在Java的Web编程中,总是需要返回结果的嘛,对于前后端分离的项目来说,对结果的封装尤其重要,如果不进行封装的话总是需要各种各样的返回类型,如果说统一了返回值类型的话那就只需要指定... -
springboot统一封装返回结果
2021-04-15 22:08:48在项目框架整合阶段,为了更优雅的封装后端返回结果,便于前后端联调,通常需要对后端的返回值进行一定的封装处理,下面介绍2种比较实用的方式 方式1:常规处理 定义一个枚举类,主要包括返回的code和message,更多... -
java开发对controller返回数据统一封装结果集
2022-02-15 22:51:27在日常开发中前后端对接一般要约定好某种规则,比如说一个接口甲同学返回code=100表示返回成功数据,乙同学返回code=200表示返回成功数据,就会形成很多各自的规则,前端对接起来也麻烦,因此针对这种情况要进行同一... -
springboot统一返回结果封装
2022-03-28 22:12:25本文实现springboot对统一返回结果进行封装,方便前后端交互。 使用lombok中的@Data注解可以省略实体类的get、set方法。 pom.xml中引入lombok依赖 <!-- lombok简化开发 --> <dependency&g... -
java方法通用返回结果集封装操作
2021-02-25 18:23:43我们在封装方法的时候,有的时候除了需要返回数据结果集data,有的时候需要返回code(或者status) 或者 msg ,此时可以采取下面两种方式进行封装方法的返回值:一.返回结果使用HashMap接收1.方法中的数据封装到hashmap... -
java 方法返回数据统一封装
2020-10-24 12:17:59方法返回数据统一封装 package indi.pentiumcm.stock.utils; import lombok.Data; import java.io.Serializable; /** @projName: Stock @packgeName: indi.pentiumcm.stock.utils @className: FunRes @... -
java返回统一结果封装类
2020-01-17 09:52:17package ... import java.io.Serializable; @SuppressWarnings("serial") public class Result implements Serializable{ private String res = "-1"; private String error = "系统异常";... -
java返回结果集封装
2018-01-11 09:31:071、返回消息统一定义文件CodeMsg.java public class CodeMsg { private int retCode; private String message; // 按照模块定义CodeMsg // 通用异常 public static CodeMsg SUCCESS = new CodeMsg(0,"success... -
java统一返回结果
2020-01-08 18:05:46后端返回统一的结果集,例如包括状态码等信息,可以让前端更好的进行页面的展示。封装这样一个结果集有通用且常用的几个属性: status: 状态码 msg:状态信息 data:返回数据 针对我在bootstrap-table返回数据的... -
封装统一的json返回结果,包含状态信息,操作结果,返回值等示例
2022-04-07 08:54:471、统一定义json结构 package com.esoon.eda.web.model; import lombok.Data; @Data public class JsonResult<T> { private T data; private String code; private String msg; public JsonResult(){... -
Java全局统一返回处理
2020-12-21 14:26:35(例:查询出来的对象集合直接返回,会统一封装在一个返回对象的data中丢给前端,保持返回数据统一) 1.创建统一返回对象: import lombok.Data; import java.io.Serializable; /** * 全局统一返回对象 * * @... -
超好用的统一API响应结果封装
2020-07-30 17:15:20超好用的统一API响应结果封装 包含返回成功/失败 里面返回POJO统一为泛型 可以直接拿到项目中使用 -
Springboot前后端分离项目统一封装返回结果
2021-05-12 19:15:34可以通过AOP拦截所有Controller,再@After的时候统一封装 @RestControllerAdvice(basePackages = {"com.system"}) public class ControllerResponseAdvice implements ResponseBodyAdvice<Object -
SpringBoot教程(八) | SpringBoot统一结果封装
2022-01-22 09:31:16前面我们写过几个接口,虽然都加了@RestController注解,相当于统一了我们的返回数据的基本形式为JSON,但是由于我们的项目可能是很多人一起开发,所以我们最好能够把我们的返回结果统一一下,让大家都返回一样的... -
java 接口返回json数据封装
2020-04-30 16:22:45首先,采用的是springboot,在controller中使用了@RestController或者@ResponseBody注解,返回的数据本身就是json格式。但是这样的json串在前后端分离使用中并不满足实际的效果,因此需要进行相应的封装,以满足前端... -
java web 通用返回json 统一返回结果
2018-12-10 03:10:41开源个自己封装的通用json返回吧,自我感觉写的还行…emmm… 主类:调用返回的 package com.orange.verify.adminweb.model; /** * web专用返回 * @author Orange * @date 2018/10/28 */ public class Response&... -
spring 统一再处理接口返回的json数据
2019-01-14 15:14:19最近公司项目出现这样一个...在spring框架下,可以利用ResponseBodyAdvice接口,实现该接口则能够在声明了ResponseBody注解的controller返回json数据前,统一对json数据做处理,将资源地址的url统一替换为cdn资源url。 -
SpringBoot统一返回结果
2022-04-09 01:30:08引言在后台开发时,控制台得到的数据格式会有不同,这时我们需要设置统一返回结果,方便我们分析数据以及对数据进行管理。一、方法定义统一的返回格式有利于提高开发效率。1、定义code状态码,和返回message200:... -
JAVA WEB开发中REST接口统一返回数据工具类封装
2020-11-09 16:55:16在JAVA WEB项目开发过程中,统一的API数据返回很常见,这里总结一下Rest接口里统一的API数据返回格式和Rpc接口里统一的API数据返回格式。 -
开发中对返回结果类的封装
2020-09-28 19:50:08文章目录SSM项目使用---ResultEntitySpring Boot项目使用---AppResponse与枚举类 SSM项目使用—ResultEntity ... * @description:统一返回结果实体类 * 使用案例: ResultEntity.success().put("page", -
统一接口返回类的封装Result,超简单易懂适合新手
2021-09-05 19:23:42基于java的前后端分离项目中,前端获取后端controller层接口返回的JSON格式的数据,并展示出来。通常为了提高代码质量,会将后端返回的数据进行统一的格式处理。 自定义工具类取名为Result import lombok.Data; ... -
SpringBoot返回统一封装格式的JSON数据
2020-06-19 13:05:31文章目录一 概要二 @RestController注解三 常用数据类型转为 JSON 格式3.1 创建 User 实体类3.2 创建 Controller 类3.3 测试不同数据类型返回的 JSON3.4 Jackson 中对 null 的处理四 使用 fastjson 封装统一返回的...
收藏数
129,300
精华内容
51,720