网上很多,自己参照手写了一个。
package com.***.pro.utils;/*** @Author: wsh*/public class Result<T> {private Boolean success;private Integer code;private String message;private T data;private Result(T data) {this.success=true;this.code=0;this.message ="成功";this.data = data;}private Result(CodeMsg cm) {if(cm == null){return;}this.success = false;this.code = cm.getCode();this.message = cm.getMessage();}/*** 成功*/public static <T> Result<T> success(T data){return new Result<>(data);}/*** 成功不需要参数*/public static <T> Result<T> success(){return (Result<T>) success("");}/*** 失败时候的调用,自定义错误码*/public static <T> Result<T> error(CodeMsg cm){return new Result<T>(cm);}/*** 失败时候的调用,默认错误码+消息*/public static <T> Result<T> error(String msg){CodeMsg cm= new CodeMsg(msg);return new Result<T>(cm);}public Boolean getSuccess() {return success;}public void setSuccess(Boolean success) {this.success = success;}public Integer getCode() {return code;}public void setCode(Integer 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;}}
package com.***.pro.utils;/*** @Author: wsh*/public class CodeMsg {private Integer code;private String message;public CodeMsg(Integer code, String message) {this.code = code;this.message = message;}public CodeMsg( String message) {this.code = -1;this.message = message;}public Integer getCode() {return code;}public void setCode(Integer code) {this.code = code;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}}
Controller调用
@GetMapping("master")public Result master( ) {List<Role> roles = roleDao.queryAll(null);//成功return Result.success(roles);}@GetMapping("slave")public Result slave( ) {List<Role> roles = roleDao.queryAll(null);//失败return Result.error("不想说话");}
返回结果
{"success": true,"code": 0,"messagg": "成功","data": [{"id": "1"}]}
{"success": false,"code": -1,"messagg": "不想说话","data": null}
如果出现下面的报错,就是你的返回类(我这里是Result类)没写set、get方法导致
No converter found for return value of type: class com.***.pro.utils.Resultorg.springframework.http.converter.HttpMessageNotWritableException: No converter found for return value of type: class com.***.pro.utils.Result
无意接了一个需求
package com.***.pro.utils;/*** @Author: wsh*/public class ResultData<T> {private CodeMsg result;private T data;private ResultData(CodeMsg codeMsg) {this.data=null;this.result =codeMsg;}private ResultData(T data) {CodeMsg codeMsg = new CodeMsg(0,"成功");this.data=data;this.result =codeMsg;}/*** 成功*/public static <T> ResultData<T> success(T data){return new ResultData<>(data);}/*** 失败时候的调用,自定义错误码*/public static <T> ResultData<T> error(CodeMsg cm){return new ResultData<T>(cm);}/*** 失败时候的调用,默认错误码+消息*/public static <T> ResultData<T> error(String msg){CodeMsg cm= new CodeMsg(msg);return new ResultData<T>(cm);}public CodeMsg getResult() {return result;}public void setResult(CodeMsg result) {this.result = result;}public T getData() {return data;}public void setData(T data) {this.data = data;}}
@RequestMapping("/master")@RestControllerpublic class TestController {@AutowiredRoleDao roleDao;@GetMapping("master")public ResultData master( ) {List<Role> roles = roleDao.queryAll(null);return ResultData.success(roles);}@GetMapping("slave")public ResultData slave( ) {List<Role> roles = roleDao.queryAll(null);return ResultData.error("不想说话");}}
浏览器访问http://127.0.0.1:8080/master/master
{"result": {"code": 0,"message": "成功"},"data": [{"id": "1"},{"id": "2"}]}
访问http://127.0.0.1:8080/master/slave
{"result": {"code": -1,"message": "不想说话"},"data": null}