开发流程如下: 开发需求,就像在线接口文档如下https://easydoc.net/s/78237135/ZUqEdvA4/OXTgKobR
这里一样, 别人告诉你需要什么功能,需要返回什么样的数据,你就通过接口的形式把他们呢实现出来即可!
这一部分都是CRUD相关的代码,所以要好好练好好写!!!
开发接口就是开发Controller、service、dao
以后工作了也是这种形式,主要是开发接口为多,前端其实不用写太多,能看懂即可!!!
下面为获取分类下所有分组&关联属性的接口编写
没错,又是CRUD,这是很基础的部分,虽然逻辑不难,但这是Java工程师最基本的能力!!!所以每一步都要理解,要多写多练知道每一步都是干什么的!!!
获取分类下所有分组&关联属性
接口功能如下
也就是说当我们选择手机分类时,那就查出手机相关的分组信息,并查出每个分组相应属性信息
如下图所示:
vovo就是指对象,它用来接收前端传递过来的参数
使用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; }
测试