SSM项目 添加服务端统一返回结果支持 #私藏项目实操分享#

2021年11月24日 阅读数:4
这篇文章主要向大家介绍SSM项目 添加服务端统一返回结果支持 #私藏项目实操分享#,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

Result.java


@Setter

@Getter

@NoArgsConstructor

@AllArgsConstructor

@ToString

public class Result<T> {

/**

* 请求响应状态码
*/

private int code;

/**

* 请求结果描述信息
*/

private String msg;

/**

* 请求结果数据
*/

private T data;



/**

* 操做成功,返回具体的数据、结果码和提示信息
*

* @param code 编号
* @param msg 信息
* @param data 数据
* @return 结果
*/

public static <T> Result<T> success(Integer code, String msg, T data) {

final Result<T> result = new Result<>(code, msg, data);

return result;

}



/**

* 操做失败,返回具体的数据、结果码和提示信息
*

* @param code 编号
* @param msg 信息
* @param data 数据
* @return 结果
*/

public static <T> Result<T> fail(Integer code, String msg, T data) {

final Result<T> result = new Result<>(code, msg, data);

return result;

}



/**

* 操做成功,返回具体的数据、结果码和提示信息
*

* @param <T> 泛型
* @return 结果
*/

public static <T> Result<T> success() {

final Result<T> result = new Result<>(ResultEnum.OK.getCode(), ResultEnum.OK.getMsg(), null);

return result;

}



/**

* 操做失败,返回具体的数据、结果码和提示信息
*

* @param <T> 泛型
* @return 结果
*/

public static <T> Result<T> fail() {

final Result<T> result = new Result<>(ResultEnum.OK.getCode(), ResultEnum.OK.getMsg(), null);

return result;

}

/**

* 操做成功,返回具体的数据、结果码和提示信息
*

* @param <T> 泛型
* @return 结果
*/

public static <T> Result<T> success(T data) {

final Result<T> result = new Result<>(ResultEnum.OK.getCode(), ResultEnum.OK.getMsg(), data);

return result;

}



/**

* 操做失败,返回具体的数据、结果码和提示信息
*

* @param <T> 泛型
* @return 结果
*/

public static <T> Result<T> fail(T data) {

final Result<T> result = new Result<>(ResultEnum.OK.getCode(), ResultEnum.OK.getMsg(), data);

return result;

}



/**

* 操做成功,返回具体的数据、结果码和提示信息
*

* @param resultEnum 枚举
* @param <T> 泛型
* @return 结果
*/

public static <T> Result<T> success(ResultEnum resultEnum) {

final Result<T> result = success(resultEnum.getCode(),resultEnum.getMsg
(), null);

return result;

}



/**

* 操做失败,返回具体的数据、结果码和提示信息
*

* @param resultEnum 枚举
* @param <T> 泛型
* @return 结果
*/

public static <T> Result<T> fail(ResultEnum resultEnum) {

final Result<T> result = success(resultEnum.getCode(),resultEnum.getMsg
(), null);

return result;

}



public staticvoid
main(String[] args) {

final Result<String> r1 = Result.success(200, null, "haha");

System.out.println(r1);

System.out.println(r1.msg == null);

System.out.println(r1.msg instanceof String);



final Result<Object> r2 = Result.success(ResultEnum.OK);

System.out.println(r2);

final Result<Date> r3 = Result.success(new Date());

final Result<Object> r4= Result.success(ResultEnum.OK);

}

}



ResultEnum.java


public enum ResultEnum {
/**

* 成功
*/

OK(200, "Success"),

/**

* 错误的请求
*/

BAD_REQUEST(400, "BadRequest"
),

UNAUTHORIZED(401, "Unauthorized"),

PAYMENT_REQUIRED(402, "PaymentRequired"
),

FORBIDDEN(403, "Forbidden"),

NOT_FOUND(404, "NotFound"
),
INTERNAL_SERVER_ERROR(500, "InternalServer Error"
),

/**

* 操做代码
*/

int code;



/**

* 提示信息
*/

String msg;



ResultEnum(int code, String msg) {

this.code = code;

this.msg = msg;

}



public int getCode() {

return code;

}



public void setCode(int code) {

this.code = code;

}



public String getMsg() {

return msg;

}



public void setMsg(String msg) {

this.msg = msg;

}

}


控制器

@Slf4j

@Controller

@RequestMapping("/user")

public class UserController {

@Resource

private UserService userService;


@ResponseBody

@DeleteMapping("/removeById/{id}")

public Result removeById(@PathVariable("id") Long id, ModelAndView mav) {

int deleteRes = userService.deleteByPrimaryKey( id);

if(deleteRes == 1){

return Result.success("删除成功");

}else {

return Result.fail("删除失败");

}

}
}

 

测试结果