1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java统一返回结果集封装 解决No converter found for return value of type

java统一返回结果集封装 解决No converter found for return value of type

时间:2021-07-15 15:11:13

相关推荐

java统一返回结果集封装 解决No converter found for return value of type

网上很多,自己参照手写了一个。

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}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。