Java工具类Result
Result:(下面写了两种Result类的编写方式,这两种的使用方法在最后面),最主要的功能就是为了向前端发送数据的时候能够更高效快捷,编写代码如下:
首先编写一个枚举类
/**
* @创建人 zengyuqiang
* @创建时间 2022/6/24
* @描述
*/
public enum Status {
OK(200,"请求成功"),
SYSTEM_ERROR(101,"系统异常"),
SQL_ERROR(109,"SQL语句异常");
;
//状态码
private Integer code;
//错误信息
private String message;
//构造器
Status(Integer code,String message){
this.code=code;
this.message=message;
}
//只需要添加get方法就行
public Integer getCode() {
return code;
}
public String getMessage() {
return message;
}
@Override
public String toString() {
return code+":"+message;
}
}
Result类编写方式一:
/**
* @创建人 zengyuqiang
* @创建时间 2022/6/24
* @描述
*/
public class R<T> {
//状态码
private Integer status;
//错误的状态信息
private String message;
//数据
private T data;
//get方法:获取状态码
public Integer getStatus() {
return status;
}
//get方法:获取错误状态信息
public String getMessage() {
return message;
}
//get方法:获取数据内容
public T getData() {
return data;
}
/**
* 构造器(私有化),这里写了3个构造器。根据实际发开需要添加即可
*/
private R(Integer status,String message,T data){
this.status=status;
this.message=message;
this.data=data;
}
private R(Integer status,String message){
this.status=status;
this.message=message;
}
private R(String message){
this.message=message;
}
//下面就是根据需要返回不同参数格式的方法
/**
* 返回《状态码》《状态信息》《数据》
* 状态码来自--->>枚举
* 状态信息来自--->>开发人员
* 数据来自--->>开发人员
*/
public static <T> R<T> buildR(Status status,String message,T data){
return new R<T>(status.getCode(),message,data);
}
/**
* 返回《状态码》《状态信息》《状态信息》
* 状态码来自--->>枚举
* 状态信息来自--->>开发人员
*/
public static <T> R<T> buildR(Status status,String message){
return new R<T>(status.getCode(),message);
}
/**
* 返回《状态码》《状态信息》《数据》
* 状态码来自--->>枚举
* 状态信息来自--->>枚举
* 数据来自--->>开发人员
*/
public static <T> R<T> buildR(Status status,T data){
return new R<T>(status.getCode(),status.getMessage(),data);
}
/**
* 返回《状态码》《状态信息》《数据》
* 状态码来自--->>枚举
* 状态信息来自--->>枚举
* 数据来自--->>开发人员
*/
public static <T> R<T> buildR(Status status){
return new R<T>(status.getCode(),status.getMessage());
}
}
Result类编写方式二:
/**
* @创建人 zengyuqiang
* @创建时间 2022/6/25
* @描述
*/
public class R1<T> {
private static Integer status;//状态码
private static String message;//错误的的状态信息
private T data;
//构造器私有化
private R1(){};
//下面的方法,根据开发需求添加即可
//请求成功调用此方法
public static R1 OK(){
R1 r1 = new R1();
status=Status.OK.getCode();
message=Status.OK.getMessage();
return r1;
}
//系统异常调用此方法
public static R1 SYSTEM_ERROR(){
R1 r1 = new R1();
status=Status.SYSTEM_ERROR.getCode();
message=Status.SYSTEM_ERROR.getMessage();
return r1;
}
//SQL语句异常调用此方法
public static R1 SQL_ERROR(){
R1 r1 = new R1();
status=Status.SQL_ERROR.getCode();
message=Status.SQL_ERROR.getMessage();
return r1;
}
//传数据的方法
public R1 data(T data){
this.data= data;
return this;
}
//toString方法
@Override
public String toString() {
return "R1{" +
"data=" + data +";"+
"status=" + status +";"+
"message=" + message +
'}';
}
将上面的枚举和工具类Result定义好后,下面就可以使用了
Result类编写方式一的用法:
@Controller
@RequestMapping("/AdsController")
public class AdsController {
@ResponseBody
@RequestMapping("/getAdsByType.action")
public R<Object> getAdsByType(Integer adTypeId) throws SQLException {
//下面的Object可以是任何类型的数据,也可以是数组或者集合
return R.buildR(Status.OK,Object);
}
}
Result类编写方式二的用法:
@Controller
@RequestMapping("/workers")
public class WokeresController {
@ResponseBody
@RequestMapping("/getWorkerByGroupPage.action")
public R1 getWorkerByGroupPage(int currentPage, int size) throws SQLException {
//R1.OK() --->R1调用方法OK(),表示调用枚举类ok的对象 --->返回的也是一个R1对象;
//.data()--->这里的意思是上面返回的R1对象调用了方法.data()--->这个时候返回的还是一个R1对象;
//由于上一行还是返回的R1对象,所以还可以在后面又去调用.data()。以此类推,后面可以无限制调用.data()方法,并且data用泛型修饰,所以可以根据开发需求调用即可对应的个数即可
return R1.OK().data("集合数据").data("数组数据").data("name=zengyuqiang");
}
}