一、基础增删改查功能
- 添加队伍
java
@PostMapping("/add")
public BaseResponse<Boolean> addTeam(@RequestBody Team team) {
if (team == null) {
throw new BusinessException(ErrorCode.PARAMS_ERROR);
}
boolean result = teamService.save(team);
if (!result) {
throw new BusinessException(ErrorCode.SYSTEM_ERROR, "添加失败");
}
return ResultUtils.success(result);
}
- 删除队伍
java
@PostMapping("/delete")
public BaseResponse<Boolean> deleteTeamById(long id) {
if (id <= 0) {
throw new BusinessException(ErrorCode.PARAMS_ERROR);
}
boolean result = teamService.removeById(id);
if (!result) {
throw new BusinessException(ErrorCode.SYSTEM_ERROR, "删除失败");
}
return ResultUtils.success(result);
}
- 修改 / 更新队伍信息
java
@PostMapping("/update")
public BaseResponse<Boolean> updateTeam(@RequestBody Team team) {
if (team == null) {
throw new BusinessException(ErrorCode.PARAMS_ERROR);
}
boolean result = teamService.updateById(team);
if (!result) {
throw new BusinessException(ErrorCode.SYSTEM_ERROR, "更新失败");
}
return ResultUtils.success(result);
}
- 查找队伍
java
@GetMapping("/get")
public BaseResponse<Team> getTeamById(long teamId) {
if (teamId <= 0) {
throw new BusinessException(ErrorCode.PARAMS_ERROR);
}
Team team = teamService.getById(teamId);
if (team == null) {
throw new BusinessException(ErrorCode.NULL_ERROR);
}
return ResultUtils.success(team);
}
二、列表查询
- 封装请求包装类
java
package com.example.usercenter.model.dto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.example.usercenter.common.PageRequest;
import lombok.Data;
/**
* @author 乐小鑫
* @version 1.0
* @Date 2024-01-22-20:14
*/
@Data
public class TeamQuery extends PageRequest {
private static final long serialVersionUID = -8434935321943948180L;
/**
* id
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 队伍名称
*/
private String name;
/**
* 最大人数
*/
private Integer maxNum;
/**
* 用户id
*/
private Long userId;
/**
* 0 - 公开,1 - 私有,2 - 加密
*/
private Integer status;
}
-
创建查询构造器
-
执行列表查询
java
@GetMapping("/list")
public BaseResponse<List<Team>> listTeams(TeamQuery teamQuery) {
if (teamQuery == null) {
throw new BusinessException(ErrorCode.PARAMS_ERROR);
}
Team team = new Team();
BeanUtils.copyProperties(teamQuery, team);
QueryWrapper<Team> queryWrapper = new QueryWrapper<>();
List<Team> teamList = teamService.list(queryWrapper);
return ResultUtils.success(teamList);
}
三、分页查询
- 通用分页查询请求参数
java
package com.example.usercenter.common;
import lombok.Data;
import java.io.Serializable;
/**
* 通用分页查询参数
* @author 乐小鑫
* @version 1.0
* @Date 2024-01-22-20:16
*/
@Data
public class PageRequest implements Serializable {
private static final long serialVersionUID = 1395844225639844641L;
/**
* 页面大小
*/
private int pageSize = 10;
/**
* 当前页数
*/
private int pageNum = 1;
}
-
创建查询构造器
-
执行分页查询
java
@GetMapping("/list/page")
public BaseResponse<Page<Team>> listTeamsByPage(TeamQuery teamQuery) {
if (teamQuery == null) {
throw new BusinessException(ErrorCode.PARAMS_ERROR);
}
Page<Team> page = new Page<>(teamQuery.getPageNum(),teamQuery.getPageSize());
QueryWrapper<Team> queryWrapper = new QueryWrapper<>();
Page<Team> resultPage = teamService.page(page, queryWrapper);
return ResultUtils.success(resultPage);
}
四、请求参数包装类和包装类
- 为什么需要请求参数包装类?
- 请求参数名称 / 类型和实体类型不一致
- 有一些参数用不到,如果要生成接口文档,会增加理解成本
- 多个实体类映射到一个对象的场景
- 为什么需要(响应数据)包装类?
- 有些数据需要隐藏,不能返回给前端(封装 VO 类)
- 有些字段某些方法不关心