仿b站微服务项目需求分析、实现思路和解决单表增删改查需求模版
需求分析与实现之前先给出解决大部分单表增删改查需求模版:
以个人主页权限查看为例:
确定请求参数和返回值,编写控制器接口定义
@RestController ResponseBody+Controller注解二合一,既注册了该类到容器且标识是个 controller又使响应json化 @Api(tags = "用户个人主页各模块权限开放状态查看与编辑") @RequestMapping("/selfCenter") 请求大路径 @CrossOrigin(value = "*") 最简单解决跨域注解 @Slf4j public class SelfCenterController { @Resource 注意注入抽象接口即可,会自动映射到实现了该接口的实现service类 SelfCenterService selfCenterService; @ApiOperation("获取用户个人主页各模块权限开放状态") @PostMapping("/getUserPrivilege/{userId}") 请求小路径和请求方法类型post public Result<PrivilegeResponse> getUserPrivilege(@PathVariable Integer userId){ ↑截取路径中的参数,注意该路径中的参数需要 return selfCenterService.getUserPrivilege(userId); 是封装类型比如Integer或String否则截取 不到 } }
编写service接口,固定方法传参返回值名称
public interface SelfCenterService { Result<PrivilegeResponse> getUserPrivilege(Integer userId); }
编写mybatis-plus对应操作表的实体类
@Data @TableName("privilege") @Accessors(chain = true) public class Privilege { @TableId(type = IdType.AUTO) Integer id; @TableField("user_id") Integer userId; @TableField("collect_group") Integer collectGroup; @TableField("remotely_like") Integer remotelyLike; @TableField("fans_list") Integer fansList; @TableField("idol_list") Integer idolList; }
创建操作该实体类的mapper
package ljl.bilibili.mapper.user_center.user_info; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import ljl.bilibili.entity.user_center.user_info.Privilege; import org.apache.ibatis.annotations.Mapper; @Mapper public interface PrivilegeMapper extends BaseMapper<Privilege> { }
写service接口的具体实现,在其中将传入参数(如果是自定义请求类则先将其转换为实体类)并入mybatis-plus特有单表增删改查语法,注入并调用对应mapper完成单表增删改查(若是查询往往需要将查出来的实体类转换为
响应类),最后泛型封装返回值,在原有返回值基础上提供额外描述字段code、msg辅助前端查看调用接口情况
public class SelfCenterServiceImpl implements SelfCenterService { 注入该mapper @Resource PrivilegeMapper privilegeMapper; @Override public Result<PrivilegeResponse> getUserPrivilege(Integer userId){ LambdaQueryWrapper<Privilege> wrapper=new LambdaQueryWrapper<>(); wrapper.eq(Privilege::getUserId,userId); Privilege privilege=privilegeMapper.selectById(userId); return Result.data(new PrivilegeResponse().setCollectGroup(privilege.getCollectGroup()).setFansList(privilege.getFansList()).setIdolList(privilege.getIdolList()).setRemotelyLike(privilege.getRemotelyLike())); } }
多表则是手写sql,注解形式写在mapper文件中或者xml文件中,然后调用mapper完成数据库层增删改查。
需求分析与实现思路
视频服务
收藏:
1.右上角看到收藏夹列表和每个收藏夹下的视频:根据传入的用户id查询得到收藏夹列表并返回收藏夹,将选定的收藏夹id传入查询得到收藏夹下的视频并返回收藏的视频
2.可以看到标注了视频是否被收藏的收藏夹列表:根据传入的用户id和视频id对收藏夹进行标记并返回有标记的收藏夹
3.可以同时收藏和取消多个视频:选定被某个收藏夹收藏和取消被某个收藏夹收藏后根据传入的对象的type字段来决定是新增收藏还是取消收藏并同时执行,并返回操作结果
4.可以创建、修改、删除收藏夹:根据传入的收藏夹对象信息来进行新增修改删除
评论:
1.获取视频下的评论:将视频id传入并返回对视频的评
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
前后端分离仿b站微服务项目教程 文章被收录于专栏
该专栏存放前后端分离仿b站微服务项目相关教程与简历话术