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. 【原创】(四)Linux进程调度-组调度及带宽控制

    背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...

  2. 快速上手 Python 命令行模块 Click

    关于Click? 说下 Click 模块是干啥的,简单说,它就是把我们的 Python 脚本的一些函数,通过 添加带有 Click 关键字的装饰器进行装饰进而将函数调用的形式转化为命令行传参的形式然后 ...

  3. C++类的详解

    目录 一.类成员的访问权限 二.成员变量的命名 三.构造函数 四.析构函数 五.C++程序也很优雅 六.类的其它知识 七.可变参数 八.课后作业 九.版权声明 超女选秀的例子我们玩了很久,为了学习的需 ...

  4. 【猫狗数据集】使用预训练的resnet18模型

    数据集下载地址: 链接:https://pan.baidu.com/s/1l1AnBgkAAEhh0vI5_loWKw提取码:2xq4 创建数据集:https://www.cnblogs.com/xi ...

  5. Js中的window.parent ,window.top,window.self 了解

    在应用有frameset或者iframe的页面时,parent是父窗口,top是最顶级父窗口(有的窗口中套了好几层frameset或者iframe),self是当前窗口, opener是用open方法 ...

  6. Spark入门(一)--用Spark-Shell初尝Spark滋味

    Spark-Shell的使用 执行scala命令的spark-shell 进入spark的sbin目录,打开键入 ./spark-shell 即可进入spark-shell的目录 spark-shel ...

  7. 分布式框架Celery(转)

    一.简介 Celery是一个异步任务的调度工具. Celery 是 Distributed Task Queue,分布式任务队列,分布式决定了可以有多个 worker 的存在,队列表示其是异步操作,即 ...

  8. mysql 多个字段重复记录查询

    select * from productstockquantity t where () ORDER BY t.CombinationI

  9. Ext.grid rowexpander的展开与收缩

    这里写Ext.grid.Panel的展开与收缩. 1. 确保在grid存在rowexpander对象: plugins: [{ ptype: 'rowexpander', rowBodyTpl: [' ...

  10. MyBatis框架——快速入门

    主流的ORM框架(帮助开发者实现数据持久化工作的框架): 1.MyBatis: 半自动化ORM框架,半自动:指框架只完成一部分功能,剩下的工作仍需开发者手动完成. MyBatis 框架没有实现 POJ ...