为了规范返回结果,保证返回结果风格统一,提高编码效率与前端调试效率,封装通用返回结果类、通用分页结果类。
本文还提供了简单的使用示例和源代码。
系列文章指路
系列文章-基于SpringBoot3创建项目并配置常用的工具和一些常用的类
使用了Lombok,可以根据业务自由扩展
@Getter
public enum ResultEnum {
SUCCESS(200,"请求成功"),
FAILED(300, "请求失败");
public final int code;
public final String message;
ResultEnum(int code, String message){
this.code=code;
this.message=message;
}
}
源代码见文末 BaseResult
返回结果包含int code
、String message
和T data
。
public BaseResult(int code, String message)
public BaseResult(ResultEnum resultEnum)
public BaseResult(int code, String message, T data)
public BaseResult(ResultEnum resultEnum, T data)
使用上述的构造方法可以满足100%需求,除此之外提供一些常用的静态方法,简化代码,提高开发效率。
对于静态方法覆盖不到的返回方式(例如既返回失败信息又想附带数据),可以使用构造方法,也可以根据业务使用频率扩展静态方法。
成功的操作通常分为两种:
public static BaseResult> success()
public static BaseResult> success(T data)
失败的操作:
public static BaseResult> fail()
public static BaseResult> fail(String message)
源代码见文末 PageResult
总记录数long total
,当前页数据列表T records
。
前端传入{offset、limit}或者{pageNum、pageSize}二者任选。
后端组织分页结果后放入通用的结果中。
@GetMapping("/pageQuery")
@Operation(summary = "pageQuery", description = "分页查询")
public Object pageQuery(@RequestParam(defaultValue = "0", value = "offset") int offset,
@RequestParam(defaultValue = "10", value = "limit") int limit) {
PageHelper.offsetPage(offset,limit);
List<Fruit> fruits = fruitService.list();
PageInfo<Fruit> page = new PageInfo<>(fruits);
PageResult<List<Fruit>> pageRes = new PageResult<>(page.getTotal(), fruits);
return BaseResult.success(pageRes);
}
@Tag(name = "BaseResult", description = "通用返回结果")
@Data
public class BaseResult<T> {
@Schema(description = "返回编码")
public int code;
@Schema(description = "返回信息")
public String message;
@Schema(description = "返回数据")
public T data;
private BaseResult() {
}
public BaseResult(int code, String message) {
this.code = code;
this.message = message;
}
public BaseResult(ResultEnum resultEnum) {
this.code = resultEnum.getCode();
this.message = resultEnum.getMessage();
}
public BaseResult(int code, String message, T data) {
this.code = code;
this.message = message;
this.data = data;
}
public BaseResult(ResultEnum resultEnum, T data) {
this.code = resultEnum.getCode();
this.message = resultEnum.getMessage();
this.data = data;
}
/**
* 默认形式,无返回数据成功
* @return BaseResult
*/
public static BaseResult<?> success() {
return new BaseResult<>(ResultEnum.SUCCESS);
}
/**
* 附带数据的成功
* @param data 数据
* @return BaseResult
*/
public static <T> BaseResult<?> success(T data) {
return new BaseResult<>(ResultEnum.SUCCESS,data);
}
/**
* 默认形式,无返回数据失败
* @return BaseResult
*/
public static BaseResult<?> fail() {
return new BaseResult<>(ResultEnum.FAILED);
}
/**
* 携带信息,返回失败
* @param message 失败信息
* @return BaseResult
*/
public static BaseResult<?> fail(String message) {
return new BaseResult<>(ResultEnum.FAILED.code,message);
}
}
@Tag(name = "PageResult", description = "分页返回结果")
@Data
public class PageResult <T> {
@Schema(description = "总记录数")
public long total;
@Schema(description = "数据列表")
public T records;
public PageResult() {
this.total = 0L;
this.records = null;
}
public PageResult(long total, T records) {
this.total = total;
this.records = records;
}
}