表现层数据封装
表现层数据封装就是返回给前端的Json数据,格式统一,方便前端去解析Json串里的数据。
返回数据格式设计:
状态
数据
消息
返回数据状态设计:视个人业务决定
根据业务不同设计不同的状态码
404
500
200
表现层包装类
package com.test.springmvc.result;
/**
* @author zhangzengxiu
* @date 2021/11/29
*/
public class Result<T> {
/**
* 结果编码
*/
private Integer code;
/**
* 操作结果数据
*/
private T data;
/**
* 消息
*/
private String message;
public Result(Integer code, String message) {
this.code = code;
this.message = message;
}
public Result(Integer code, String message, T data) {
this.code = code;
this.message = message;
this.data = data;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
操作编码
package com.test.springmvc.result;
/**
* @author zhangzengxiu
* @date 2021/11/29
*/
public enum Status {
SAVE_OK(20011, "保存成功"),
DELETE_OK(20021, "删除成功"),
UPDATE_OK(20031, "修改成功"),
GET_OK(20041, "查询成功"),
SAVE_ERR(20010, "保存失败"),
DELETE_ERR(20020, "删除失败"),
UPDATE_ERR(20030, "修改失败"),
GET_ERR(20040, "查询失败");
/**
* 状态编码
*/
private Integer code;
/**
* 状态信息
*/
private String message;
Status(Integer code, String message) {
this.code = code;
this.message = message;
}
public Integer getCode() {
return code;
}
public String getMessage() {
return message;
}
}
修改后的Controller
package com.test.springmvc.controller;
import com.test.springmvc.domain.User;
import com.test.springmvc.result.Result;
import com.test.springmvc.result.Status;
import com.test.springmvc.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @author zhangzengxiu
* @date 2021/11/26
*/
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/findALL")
public Result<List<User>> findALL() {
List<User> userList = userService.findALL();
if (userList == null || (userList != null && userList.size() == 0)) {
return new Result(Status.GET_ERR.getCode(), Status.GET_ERR.getMessage());
}
return new Result(Status.GET_OK.getCode(), Status.GET_OK.getMessage(), userList);
}
@GetMapping("/findById/{id}")
public Result<User> findById(@PathVariable("id") int id) {
User user = userService.findById(id);
if (user == null) {
return new Result(Status.GET_ERR.getCode(), Status.GET_ERR.getMessage());
}
return new Result(Status.GET_OK.getCode(), Status.GET_OK.getMessage(), user);
}
@PostMapping("/addUser")
public Result addUser(@RequestBody User user) {
Integer row = userService.addUser(user);
if (row != 1) {
return new Result(Status.SAVE_ERR.getCode(), Status.SAVE_ERR.getMessage());
}
return new Result(Status.SAVE_OK.getCode(), Status.SAVE_OK.getMessage());
}
@DeleteMapping("/delUserById/{id}")
public Result delUserById(@PathVariable("id") int id) {
Integer row = userService.delUserById(id);
if (row != 1) {
return new Result(Status.DELETE_ERR.getCode(), Status.DELETE_ERR.getMessage());
}
return new Result(Status.DELETE_OK.getCode(), Status.DELETE_OK.getMessage());
}
@PutMapping("/updateUser")
public Result updateUser(@RequestBody User user) {
Integer row = userService.updateUser(user);
if (row != 1) {
return new Result(Status.UPDATE_ERR.getCode(), Status.UPDATE_ERR.getMessage());
}
return new Result(Status.UPDATE_OK.getCode(), Status.UPDATE_OK.getMessage());
}
返回数据
操作成功时,返回的Json数据格式:
举例:查询全部
{
"code": 20041,
"data": [
{
"id": 1,
"name": "张三",
"age": 23
},
{
"id": 2,
"name": "李四",
"age": 24
},
{
"id": 3,
"name": "王五",
"age": 25
},
{
"id": 4,
"name": "赵六",
"age": 26
}
],
"message": "查询成功"
}
操作失败时,返回的Json数据格式:
举例:查询单个
{
"code": 20040,
"data": null,
"message": "查询失败"
}