TreeUtils工具类一行代码实现列表转树【第三版优化】 三级菜单 三级分类 附视频()

  本篇文章为你整理了TreeUtils工具类一行代码实现列表转树【第三版优化】 三级菜单 三级分类 附视频()的详细内容,包含有 TreeUtils工具类一行代码实现列表转树【第三版优化】 三级菜单 三级分类 附视频,希望能帮助你了解 TreeUtils工具类一行代码实现列表转树【第三版优化】 三级菜单 三级分类 附视频。

  在日常一线开发过程中,总有列表转树的需求,几乎是项目的标配,比方说做多级菜单、多级目录、多级分类等,有没有一种通用且跨项目的解决方式呢?帮助广大技术朋友给业务瘦身,提高开发效率。

  本文将基于Java8的Lambda 表达式和Stream等知识,使用TreeUtils工具类实现一行代码完成列表转树这一通用型需求。本文有配套视频,传送门直达。

  需要说明的是,本TreeUtils工具类已进行三版优化,能够胜任生产场景绝大多数列表转树的。

  二、实战编码

  1、引入坐标

  本坐标地址包含TreeUtils工具类方法,已经发布到Maven中央仓库,建议使用最新的版本号,本文发布时版本是1.5.8.3,若有最新版本,建议使用最新版本。

  学习源码的朋友,源码直通车

  

 dependency 

 

   groupId xin.altitude.cms /groupId

   artifactId ucode-cms-common /artifactId

   version 1.5.8.3 /version

   /dependency

  

 

  2、编写DO

  DO是访问数据库实体类,属于前期准备素材。

  

@Data

 

  @NoArgsConstructor

  @AllArgsConstructor

  @TableName(value = "bu_category3")

  public class Category {

   private static final long serialVersionUID = 1L;

   @TableId(type = IdType.AUTO)

   private String id;

   private String name;

   private String parentId;

   private String remark;

   @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")

   private LocalDateTime createTime;

   @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")

   private LocalDateTime updateTime;

   public Category(Category category) {

   if (Objects.nonNull(category)) {

   this.id = category.id;

   this.name = category.name;

   this.parentId = category.parentId;

   this.remark = category.remark;

   this.createTime = category.createTime;

   this.updateTime = category.updateTime;

  

 

  3、创建BO

  创建BO数据模型用于构造属性结点

  

@Data

 

  @NoArgsConstructor

  public class CategoryBo {

   private String id;

   private String name;

   private String parentId;

   private String remark;

   * 孩子结点 名字任意取

   private List CategoryBo childList;

   * 实现Category 转 CategoryBo

   * @param category

   public CategoryBo(Category category) {

   if (Objects.nonNull(category)) {

   this.id = category.getId();

   this.name = category.getName();

   this.parentId = category.getParentId();

   this.remark = category.getRemark();

  

 

  3、调用TreeUtils工具类

  在服务层调用TreeUtils工具类,一行代码完成转换。

  

/**

 

   * 获取DO中指定的属性 并构造成树

   * @return

  public List CategoryBo selectCategory4() {

   List Category categoryList = this.list();

   List CategoryBo categoryBoList = EntityUtils.toList(categoryList, CategoryBo::new);

   return TreeUtils.createNodeDetail(categoryBoList, "000000", CategoryBo::getId, CategoryBo::getParentId, CategoryBo::getChildList);

  

 

  4、效果展示

  原始列表数据

  

{

 

   "code": 200,

   "msg": "操作成功",

   "data": [

   "id": "310000",

   "name": "电子商务",

   "parentId": "000000",

   "remark": "EEEEE",

   "createTime": null,

   "updateTime": "2021-11-21 11:22:40"

   "id": "310100",

   "name": "大宗商品",

   "parentId": "310000",

   "remark": "JJJJJ",

   "createTime": null,

   "updateTime": "2021-11-21 11:22:52"

   "id": "310101",

   "name": "大宗商品综合",

   "parentId": "310100",

   "remark": "IIIII",

   "createTime": null,

   "updateTime": "2021-11-21 11:22:58"

   "id": "310102",

   "name": "钢铁类电商",

   "parentId": "310100",

   "remark": "OOOOO",

   "createTime": null,

   "updateTime": "2021-11-21 11:23:02"

   "id": "310200",

   "name": "综合电商",

   "parentId": "310000",

   "remark": "NNNNN",

   "createTime": null,

   "updateTime": "2021-11-21 11:23:07"

  

 

  树状层次数据

  

{

 

   "code": 200,

   "msg": "操作成功",

   "data": [

   "id": "310000",

   "name": "电子商务",

   "parentId": "000000",

   "remark": "EEEEE",

   "childList": [

   "id": "310100",

   "name": "大宗商品",

   "parentId": "310000",

   "remark": "JJJJJ",

   "childList": [

   "id": "310101",

   "name": "大宗商品综合",

   "parentId": "310100",

   "remark": "IIIII",

   "childList": []

   "id": "310102",

   "name": "钢铁类电商",

   "parentId": "310100",

   "remark": "OOOOO",

   "childList": []

   "id": "310200",

   "name": "综合电商",

   "parentId": "310000",

   "remark": "NNNNN",

   "childList": []

  

 

  通过一个小小的高频业务场景,抽离业务共性,屏蔽业务细节,实现了通用型业务逻辑的编码。

  希望广大技术朋友在完成日常开发工作的前提下,能够进一步打磨代码,感受编程之美。

  以上就是TreeUtils工具类一行代码实现列表转树【第三版优化】 三级菜单 三级分类 附视频()的详细内容,想要了解更多 TreeUtils工具类一行代码实现列表转树【第三版优化】 三级菜单 三级分类 附视频的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: