SpringBoot3
统一json返回的数据格式
1.接上篇,在common中添加常数类
1.1ApiResult类
/**
* 统一返回对象
*
* @author haowei
*/
//@ApiModel("返回对象")
@Getter
@Setter
@ToString
@Builder
public class ApiResult<T> {
//@ApiModelProperty(name = "code", value = "返回码", example = "0")
private int code;
//@ApiModelProperty(name = "msg", value = "返回消息", example = "SUCCESS")
private String msg;
//@ApiModelProperty(name = "data", value = "返回数据体", example = "{}")
private T data;
public ApiResult() {
}
public ApiResult(int code, String msg, T data) {
this.code = code;
this.msg = msg;
this.data = data;
}
/**
* 通用成功方法
*
* @param data 数据
* @param <T> 类型
* @return 对象
*/
public static <T> ApiResult<T> success(T data) {
return new ApiResult<>(HttpCodeEnum.SUCCESS.getCode(), HttpCodeEnum.SUCCESS.getMsg(), data);
}
/**
* 通用失败方法
*
* @param code 返回码
* @param msg 返回消息
* @param <T> 类型
* @return 对象
*/
public static <T> ApiResult<T> failure(int code, String msg) {
return new ApiResult<>(code, msg, null);
}
/**
* 通用失败方法
*
* @param httpCodeEnum 返回枚举
* @param <T> 类型
* @return 对象
*/
public static <T> ApiResult<T> failure(HttpCodeEnum httpCodeEnum) {
return new ApiResult<>(httpCodeEnum.getCode(), httpCodeEnum.getMsg(), null);
}
}
1.2HttpCodeEnum类
/**
* http请求code
*
* @author haowei
*/
@ToString
@Getter
public enum HttpCodeEnum {
/**
* 成功
*/
SUCCESS(20000, "SUCCESS"),
/**
* 代码或数据错误
*/
fail(20001, "服务器内部错误,请联系后台管理员"),
/**
* 参数异常
*/
PARAM_ERR(-1, "PARAM ERROR"),
/**
* 用户不存在
*/
USER_NULL(-2, "USER IS NOT EXISTS"),
/**
* 密码错误
*/
INVALID_PWD(-3, "INVALID PASSWORD");
private final int code;
private final String msg;
HttpCodeEnum(int code, String msg) {
this.code = code;
this.msg = msg;
}
}
2.修改Controller类
@RestController
@RequestMapping("/stu")
public class StudentController {
@Autowired
StudentServiceImpl service;
// 查询全部学生信息,GetMapping无值默认访问
@GetMapping
public ApiResult<List<Student>> getAll() {
return ApiResult.success(service.list());
}
// 查询单个信息
// 若设为@GetMapping("/one"),则访问路径为localhost/stu/one?sid=1
// 若设为@GetMapping("/{sid}"),则访问路径为localhost/stu/1,@PathVariable指路径变量
@GetMapping("/{sid}")
public ApiResult<Student> getOne(@PathVariable Integer sid) {
return ApiResult.success(service.getById(sid));
}
// 添加学生信息
@PutMapping
public ApiResult<Boolean> insert(@RequestBody Student student) {//Put必须加@RequestBody注解
return ApiResult.success(service.save(student));
}
// 修改学生信息
@PostMapping
public ApiResult<Boolean> update(@RequestBody Student student){
return ApiResult.success(service.updateById(student));
}
// 删除学生信息
@DeleteMapping("/{sid}")
public ApiResult<Boolean> delect(@PathVariable Integer sid){
return ApiResult.success(service.removeById(sid));
}
}
分页功能
1.修改Controller查询方法的代码
// 查询全部学生信息,GetMapping无值默认访问
@GetMapping("/{page_num}/{page_size}")
//获取对象列表
public ApiResult<List<Student>> getAll(@PathVariable Integer page_num,@PathVariable Integer page_size) {
Page<Student> page = new Page<>(page_num,page_size);
Page<Student> studentPage = service.page(page);
return ApiResult.success(studentPage.getRecords());
}
2.接口说明
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人