携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第21天,点击查看活动详情
开发流程如下: 开发需求,就像在线接口文档如下https://easydoc.net/s/78237135/ZUqEdvA4/OXTgKobR这里一样, 别人告诉你需要什么功能,需要返回什么样的数据,你就通过接口的形式把他们呢实现出来即可!
这一部分都是CRUD相关的代码,所以要好好练好好写!!!
开发接口就是开发Controller、service、dao
以后工作了也是这种形式,主要是开发接口为多,前端其实不用写太多,能看懂即可!!!
下面为获取分类下所有分组&关联属性的接口编写
没错,又是CRUD,这是很基础的部分,虽然逻辑不难,但这是Java工程师最基本的能力!!!所以每一步都要理解,要多写多练知道每一步都是干什么的!!!
获取分类下所有分组&关联属性
接口功能如下
也就是说当我们选择手机分类时,那就查出手机相关的分组信息,并查出每个分组相应属性信息
如下图所示:
vo vo就是指对象,它用来接收前端传递过来的参数
使用vo能更自定义化,使代码更灵活和通用,降低耦合
@Data
public class AttrGroupWithAttrsVo {
/**
* 分组id
*/
@TableId
private Long attrGroupId;
/**
* 组名
*/
private String attrGroupName;
/**
* 排序
*/
private Integer sort;
/**
* 描述
*/
private String descript;
/**
* 组图标
*/
private String icon;
/**
* 所属分类id
*/
private Long catelogId;
private List<AttrEntity> attrs;
}
controller
获取分类下所有分组&关联属性
/**
* 7.获取分类下所有分组&关联属性
* /product/attrgroup/{catelogId}/withattr
*/
@GetMapping("/{catelogId}/withattr")
public R getAttrGroupWithAttrs(@PathVariable("catelogId") Long catelogId) {
List<AttrGroupWithAttrsVo> vos = attrGroupService.getAttrGroupWithAttrsByCatelogId(catelogId);
return R.ok().put("data",vos);
}
service
vo的重要性:
- vo(value object)当相应数据需要自定义时,用vo是最好的选择,不需要对实体类字段进行修改
1.获取分类下的所有分组,封装成集合分类和组的关系在pms_group表中,所以(where catelog_id = ?)即可查出分类对应的组由于这是mp,它会得出所有的这种关系,并把结果封装成集合
2.获得分组下的属性要第三张关联表,直接调用关联表的service即查询分组对应的属性id获得属性id在去调用属性表的service即可查询属性名以上两步前面已经写好逻辑了直接调用即可attrService.getRelationAttr(groupId)
/**
* 获取分类下的所有分组及属性
* @param catelogId
* @return
*/
@Override
public List<AttrGroupWithAttrsVo> getAttrGroupWithAttrsByCatelogId(Long catelogId) {
/** 1.获取分类下的所有分组,封装成集合
* 分类和组的关系在pms_group表中,所以(where catelog_id = ?)即可查出分类对应的组
* 由于这是mp,它会得出所有的这种关系,并把结果封装成集合
*/
List<AttrGroupEntity> list = this.list(new QueryWrapper<AttrGroupEntity>().eq("catelog_id", catelogId));
/** 2.获得分组下的属性
* 要第三张关联表,直接调用关联表的service即查询分组对应的属性id
* 获得属性id在去调用属性表的service即可查询属性名
* 以上两步前面已经写好逻辑了直接调用即可attrService.getRelationAttr(groupId)
*/
List<AttrGroupWithAttrsVo> collect = list.stream().map((item) -> {
AttrGroupWithAttrsVo attrGroupWithAttrsVo = new AttrGroupWithAttrsVo();
BeanUtils.copyProperties(item, attrGroupWithAttrsVo);
List<AttrEntity> attrs = attrService.getRelationAttr(attrGroupWithAttrsVo.getAttrGroupId());
if (attrs != null) {
attrGroupWithAttrsVo.setAttrs(attrs);
}
return attrGroupWithAttrsVo;
}).filter((attrvo) -> {
return attrvo.getAttrs() != null && attrvo.getAttrs().size() > 0;
}).collect(Collectors.toList());
return collect;
}
测试