controller的返回结果一般有两种:

    1.Rest API JSON 输出

    2.页面

目的:编写优雅的代码

实现:通过泛型对返回结果进行封装

代码如下:

一.控制层

 /**
* 获取用户成功
* @return
*/
@RequestMapping("/getUser")
@ResponseBody
public Result<User> getUser(@RequestParam("id") int id){
User user = userService.getUserById(id);
System.out.println(user.toString()); return Result.success(user);
}

返回结果:{"code":0,"message":"SUCCESS","data":{"id":1,"name":"斗战胜佛"}}

 /**
* 获取用户失败
* @param id
* @return
*/
@RequestMapping("/getUserFailed")
@ResponseBody
public Result<CodeMsg> getUserFailed(@RequestParam("id") int id){
User user = userService.getUserById(id);
System.out.println(user.toString()); return Result.error(CodeMsg.SERVER_ERROR);
}

返回结果:{"code":500100,"message":"服务端异常","data":null}

二:Result类

 public class Result<T> {

     private int code;
private String message;
private T data; /**
* 成功时调用
* @param data
* @param <T>
* @return
*/
public static <T> Result<T> success(T data){
return new Result<T>(data);
} /**
* 失败时调用
* @param codeMsg
* @param <T>
* @return
*/
public static <T> Result error(CodeMsg codeMsg){
return new Result<T>(codeMsg);
} /**
* 构造方法私有化,不允许外部new Result
* @param data
*/
private Result(T data){
this.code = 0;
this.message = "SUCCESS";
this.data = data;
} /**
* 构造方法私有化,不允许外部new Result
* @param codeMsg
*/
private Result(CodeMsg codeMsg){
if (null == codeMsg) {
return;
}
this.code = codeMsg.getCode();
this.message = codeMsg.getMessage();
} public int getCode() {
return code;
} public void setCode(int code) {
this.code = code;
} public String getMessage() {
return message;
} public void setMessage(String message) {
this.message = message;
} public T getData() {
return data;
} public void setData(T data) {
this.data = data;
}
}

三:CodeMsg类

 public class CodeMsg {

      private int code;
private String message; /**
* //通用模块异常 5001XX
*/
public static CodeMsg SUCCESS = new CodeMsg(0,"SUCCESS");
public static CodeMsg SERVER_ERROR = new CodeMsg(500100,"服务端异常"); //登陆模块异常 5002XX
//商品模块异常 5003XX
//订单模块异常 5004XX
//秒杀模块异常 5005XX private CodeMsg(int code, String message) {
this.code = code;
this.message = message;
} public int getCode() {
return code;
} public String getMessage() {
return message;
}
}

泛型--->Result返回结果封装的更多相关文章

  1. spring boot 接口返回值封装

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

  2. struts2 中的 result 返回类型是 json 的配置问题

    struts2 中的 result 返回类型是 json 的配置问题 1.引入包(本文中的包全部引自struts-2.1.8.1\lib): struts2-json-plugin-2.1.8.1.j ...

  3. Java Web 实用返回结果封装

    实用的返回结果封装 使用示例 效果 Result ResultEnum 使用示例 /** * @Author: huangwenjun * @Description: * @Date: Created ...

  4. .Net Core Mvc/WebApi 返回结果封装

    一.背景 为了方便开发,简化代码,也为了与前端方便对接,需要对接口服务返回结果进行统一处理. .Net Core 中返回结果的处理与 .Net Framework 中的处理不一样. .Net Core ...

  5. Spring Boot API 统一返回格式封装

    今天给大家带来的是Spring Boot API 统一返回格式封装,我们在做项目的时候API 接口返回是需要统一格式的,只有这样前端的同学才可对接口返回的数据做统一处理,也可以使前后端分离 模式的开发 ...

  6. js返回顶部封装 简洁

    js返回顶部封装 简洁: 加入html页面body最后面即可. <script> a(); function a() { $(function() { if ($(".j-to- ...

  7. C#中返回值封装

    在平时开发过程中常常需要取一个方法的返回值,BOSS写了一个返回值类,做个练习以备不时之需: 返回值支持泛型和非泛型 先贴上代码: 非泛型返回值类: using System; using Syste ...

  8. Ajax--json(Ajax调用返回json封装代码、格式及注意事项)

    Ajax调用json封装代码<dbda.php>: //Ajax调用返回JSON public function JsonQuery($sql,$type=1,$db="mydb ...

  9. 泛型(二)封装工具类CommonUtils-把一个Map转换成指定类型的javabean对象

    1.commons-beanutils的使用 commons-beanutils-1.9.3.jar 依赖 commons-logging-1.2.jar 代码1: String className ...

随机推荐

  1. 关于有趣的windows.h

    system 函数: 这个函数差不多就是调用 cmd (命令提示符). 当然,不一定要在程序中调用,用 txt 打入文本( 不用加system() )后改后缀名为 cmd 后运行即可. Win 键 + ...

  2. Windows环境下docker的安装与配置

    Docker是一种容器技术,可以在操作系统中隔离出若干个独立的程序运行环境,这些环境既可以共享宿主机的资源,另一方面他们之间相互独立,互不影响,也不会对宿主机的环境产生影响.与虚拟化技术不同的是,Do ...

  3. python之函数介绍

    # 函数 # 什么是函数: 能完成特定功能的工具,在Python中表示能完成特定功能的代码块.(函数定义) # 为什么要用函数 :①函数可以重复调用出来,效率高,而且维护成本低 ②使程序结构看起来清晰 ...

  4. 日常破解--从XCTF的app3题目简单了解安卓备份文件以及sqliteCipher加密数据库

    一.题目来源     题目来源:XCTF app3题目 二.解题过程     1.下载好题目,下载完后发现是.ab后缀名的文件,如下图所示:     2.什么是.ab文件?.ab后缀名的文件是Andr ...

  5. AppBoxFuture实战: 如何同步开发与生产环境的模型

      框架是用抽象模型驱动的方式来生成应用系统的,这样可以将这些模型序列化为相应的模型包文件,通过反序列化导入至其他部署环境内,从而实现开发环境与生产环境的同步,包括对应的数据库结构的同步.下面通过示例 ...

  6. ALSA 声卡 驱动 linux 4.1.36 中变化

    linux 4.1.36 中变化 1ret = request_irq(IRQ_DMA2, s3c2440_dma2_irq, IRQF_DISABLED, "myalsa for play ...

  7. 程序员过关斩将-- 喷一喷坑爹的面向UI编程

    摒弃面向UI编程 为何喷起此次话题,因为前不久和我们首席架构师沟通,谈起程序设计问题,一不小心把UI扯进来,更把那些按照UI来编程的后台工程师也扯了进来.今天特意百度了一下(其实程序员应该去googl ...

  8. appnium适应之配置

    一.session #获取包名和acctivename#这个工具在adk包里面aapt.exe dump badging E:\Wandoujia_851097_web_seo_baidu_binde ...

  9. typescript package.json vscode 终端 运行任务 Ctrl shift B

    { "dependencies": { "typescript": "^3.6.4" } }

  10. 使用Netty如何解决拆包粘包的问题

    首先,我们通过一个DEMO来模拟TCP的拆包粘包的情况:客户端连续向服务端发送100个相同消息.服务端的代码如下: AtomicLong count = new AtomicLong(0); NioE ...