网上很多,自己参照手写了一个。
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.Result
org.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")
@RestController
public class TestController {
@Autowired
RoleDao 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
}