springboot(十二)规范请求和响应

26 阅读2分钟

分页请求查询

req

用户查询请求

req/UserQueryReq

@Data
@ToString(callSuper = true) //要加上callSuper = true,否则extends不生效
public class UserQueryReq extends PageReq{

    private String name;

    private Integer age;

}

用户保存请求 req/UserSaveReq

@Data
@ToString
public class UserSaveReq {

    private Integer id;

    @NotNull(message = "【name】不能为空")
    private String name;

    @NotNull(message = "【age】不能为空")
    private Integer age;
}

用户更新请求 req/UserSaveReq

@Data
public class UserUpdateReq {

    @NotNull(message = "【id】不能为空")
    private Integer id;

    private String name;

    private Integer age;
}

分页请求

req/PageReq

@Data
public class PageReq {
    @NotNull(message = "【页码】不能为空")
    private Integer page;

    @NotNull(message = "【每页条数】不能为空")
    @Max(value = 100, message = "【每页条数】不能超过100")
    private Integer size;
}

resp

公共响应

resp/CommonResp

public class CommonResp<T> {

    /**
     * 业务上的成功或失败
     */
    private boolean success = true;

    /**
     * 返回信息
     */
    private String message;

    /**
     * 返回泛型数据,自定义类型
     */
    private T content;

    public CommonResp() {
    }

    public CommonResp(boolean success, String message, T content) {
        this.success = success;
        this.message = message;
        this.content = content;
    }

    public CommonResp(T content) {
        this.content = content;
    }

    public boolean getSuccess() {
        return success;
    }

    public void setSuccess(boolean success) {
        this.success = success;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public T getContent() {
        return content;
    }

    public void setContent(T content) {
        this.content = content;
    }

    @Override
    public String toString() {
        final StringBuffer sb = new StringBuffer("CommonResp{");
        sb.append("success=").append(success);
        sb.append(", message='").append(message).append('\'');
        sb.append(", content=").append(content);
        sb.append('}');
        return sb.toString();
    }
}

分页响应

resp/PageResp

public class PageResp<T> implements Serializable {

    /**
     * 总条数
     */
    private Long total;

    /**
     * 当前页的列表
     */
    private List<T> list;

    public Long getTotal() {
        return total;
    }

    public void setTotal(Long total) {
        this.total = total;
    }

    public List<T> getList() {
        return list;
    }

    public void setList(List<T> list) {
        this.list = list;
    }

    @Override
    public String toString() {
        return "PageResp{" +
                "total=" + total +
                ", list=" + list +
                '}';
    }
}

controller

@RestController
@RequestMapping("user")
@Slf4j
public class UserController {
    @Resource
    private UserService userService;
    @GetMapping("/query-list")
    public CommonResp<PageResp<UserQueryResp>> queryList(@Valid @RequestBody UserQueryReq req) {
        PageResp<UserQueryResp> list = userService.queryList(req);
        return new CommonResp<>(list);
    }

    @PostMapping("/save")
    public CommonResp<Object> save(@Valid @RequestBody UserSaveReq req) {
        userService.save(req);
        return new CommonResp<>();
    }

    @PutMapping("/update")
    public CommonResp<Object> update(@Valid @RequestBody UserUpdateReq user) {
        userService.update(user);
        return new CommonResp<>();
    }

    @DeleteMapping("/delete/{id}")
    public CommonResp<Object> update(@PathVariable Integer id) {
        userService.delete(id);
        return new CommonResp<>();
    }
}

service

@Service
@Slf4j
public class UserService {

    @Resource
    private UserMapper userMapper;
    public PageResp<UserQueryResp> queryList(UserQueryReq req) {
        UserExample userExample = new UserExample();
        UserExample.Criteria criteria = userExample.createCriteria();
        if (ObjUtil.isNotNull(req.getName())) {
            criteria.andNameEqualTo(req.getName());
        }
        log.info("查询页码:{}", req.getPage());
        log.info("每页条数:{}", req.getSize());

        PageHelper.startPage(req.getPage(), req.getSize());
        List<User> userList = userMapper.selectByExample(userExample);

        PageInfo<User> pageInfo = new PageInfo<>(userList);
        log.info("总行数:{}", pageInfo.getTotal());
        log.info("总页数:{}", pageInfo.getPages());

        List<UserQueryResp> list = BeanUtil.copyToList(userList, UserQueryResp.class);

        PageResp<UserQueryResp> pageResp = new PageResp<>();
        pageResp.setTotal(pageInfo.getTotal());
        pageResp.setList(list);
        return pageResp;
    }

    public void save(UserSaveReq req){
        User user = BeanUtil.copyProperties(req,User.class);
        user.setName(req.getName());
        user.setAge(req.getAge());
        userMapper.insert(user);
    }
    public void update(UserUpdateReq req) {
        User user = BeanUtil.copyProperties(req,User.class);
        user.setId(req.getId());
        if(ObjUtil.isNotNull(userMapper.selectByPrimaryKey(req.getId()))){
            user.setName(req.getName());
            user.setAge(req.getAge());
            userMapper.updateByPrimaryKeySelective(user);
        }
    }

    public void delete(Integer id) {
        userMapper.deleteByPrimaryKey(id);
    }
}