java按照指定格式数据封装

一、需求

1、数据库表
在这里插入图片描述
2、按照如下格式进行数据分装:

 {
      {
        "id": "1178214681181483010",
        "title": "一级分类",
        "children": [
          {
            "id": "1178214681210843137",
            "title": "二级分类"
          }
        ]
      },
}

二、解决方式

1、创建数据库表实体类

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="EduSubject对象", description="课程科目")
public class EduSubject implements Serializable {

    private static final long serialVersionUID=1L;

    @ApiModelProperty(value = "课程类别ID")
      @TableId(value = "id", type = IdType.ASSIGN_ID)
    private String id;

    @ApiModelProperty(value = "类别名称")
    private String title;

    @ApiModelProperty(value = "父ID")
    private String parentId;

    @ApiModelProperty(value = "排序字段")
    private Integer sort;

    @ApiModelProperty(value = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    private Date gmtCreate;

    @ApiModelProperty(value = "更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date gmtModified;

}

2、根据返回数据创建一级分类实体类

/**
 * 一级分类
 * @Author jzd
 * @Date 2020/8/2 15:07
 */
@Data
public class OneSubject {
    private String id;
    private String title;

    //一个一级分类有多个二级分类
    private List<TwoSubject> children = new ArrayList<>();
}

3、根据返回数据创建二级分类实体类

/**
 * 二级分类
 * @Author jzd
 * @Date 2020/8/2 15:07
 */
@Data
public class TwoSubject {
    private String id;
    private String title;
}

3、编写具体封装

//课程分类列表
@Override
public List<OneSubject> getOneTwoSubject() {
    //查询出所有一级分类 parentId = 0
    QueryWrapper<EduSubject> wrapperOne = new QueryWrapper<>();
    wrapperOne.eq("parent_id","0");
    List<EduSubject> oneSubjectList  = baseMapper.selectList(wrapperOne);

    //查询出所有二级分类 parentId != 0
    QueryWrapper<EduSubject> wrapperTwo = new QueryWrapper<>();
    wrapperOne.ne("parent_id","0");
    List<EduSubject> twoSubjectList  = baseMapper.selectList(wrapperTwo);

    //封装一级分类
    List<OneSubject> finalSubjectList = new ArrayList<>();
    for (int i = 0; i <oneSubjectList.size() ; i++) {
        EduSubject eduSubject = oneSubjectList.get(i);
        OneSubject oneSubject = new OneSubject();
        BeanUtils.copyProperties(eduSubject,oneSubject);
        finalSubjectList.add(oneSubject);
        //封装二级分类
        List<TwoSubject> twoFinalSubjectList = new ArrayList<>();
        for (int j = 0; j < twoSubjectList.size(); j++) {
            EduSubject eduSubject2 = twoSubjectList.get(j);
            if (eduSubject2.getParentId().equals(eduSubject.getId())) {
                TwoSubject twoSubject = new TwoSubject();
                BeanUtils.copyProperties(eduSubject2,twoSubject);
                twoFinalSubjectList.add(twoSubject);
            }
        }
        oneSubject.setChildren(twoFinalSubjectList);
    }
    return finalSubjectList;
}

三、总结

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值