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系统与应用准备

    实验一 Linux系统与应用准备 项目 内容 作业归属 班级课程 作业要求 课程作业要求 学号-姓名 17041419-刘金林 作业学习目标 1.学习博客园软件开发者学习社区使用技巧和经验:2.学习M ...

  2. C语言程序设计(十) 字符串

    第十章 字符串 字符串常量是由一对双引号括起来的一个字符串序列 字符串实际就是由若干个有效数字构成且以字符'\0'作为结束的一个字符序列 C语言没有提供字符串数据类型,因此字符串的存取要用字符型数组来 ...

  3. redis实现数据库(一)

    转:https://www.cnblogs.com/beiluowuzheng/p/9738159.html 服务器中的数据库 Redis服务器将所有数据库都保存在服务器状态redis.h/redis ...

  4. 超强图文|并发编程【等待/通知机制】就是这个feel~

    你有一个思想,我有一个思想,我们交换后,一个人就有两个思想 If you can NOT explain it simply, you do NOT understand it well enough ...

  5. ES6中的find与filter的区别

    一直以来以为find和filter是一样的效果,最近在梳理,才发现是不一样的. 首先,filter和find区别:filter返回的是数组,find返回的是对象. 注意:find()找到第一个元素后就 ...

  6. ASP.net 简单ajax实现

    <script type="text/javascript"> $(function () { var t=$("txt1").val(); $.a ...

  7. (转)GNU风格ARM汇编语法指南(非常详细)1

    原文地址:http://zqwt.012.blog.163.com/blog/static/120446842010111481551809/ 汇编源程序一般用于系统最基本的初始化:初始化堆栈指针.设 ...

  8. 【分布式锁】01-使用Redisson实现可重入分布式锁原理

    前言 主流的分布式锁一般有三种实现方式: 数据库乐观锁 基于Redis的分布式锁 基于ZooKeeper的分布式锁 之前我在博客上写过关于mysql和redis实现分布式锁的具体方案:https:// ...

  9. 使用docker构建hadoop集群

    docker的使用越来越普遍了,大家不知道docker的还需要进一步学习一下.这次咱们使用docker去进行hadoop集群的构建. 使用docker构建的好处真的很多,一台电脑上可以学习安装很多想做 ...

  10. React Native实现短信转发到微信上

    缘由 都说需求来源于生活我为什么会有一个这么奇葩的需求呢?来看一个故事. 昨天为了省点手续费导航走了3公里多去找一家工行ATM机(没办法穷)然后到了以后发现ATM机在人家的园区里面,现在疫情进入要通行 ...