<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
1:首先我們看一下資料庫的表:
這裡的pid就是代表他的父節點id,如果沒有父節點,那麼pid就是0,上面的表就可以看作是一個tree結構,那麼我們怎樣去將這個tree結構返回給前端呢?
2:首先寫好資料庫對應的實體類和Dto層:
package com.wyr.modules.example.domain; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import lombok.Data; import com.baomidou.mybatisplus.annotation.TableName; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.copier.CopyOptions; import javax.validation.constraints.*; import java.sql.Timestamp; import java.io.Serializable; /** * @author jianyijun * @date 2022-07-02 */ @Data @TableName("store_category") public class Category implements Serializable { /** 商品分類表ID */ @TableId private Integer id; /** 父id */ @NotNull private Integer pid; /** 分類名稱 */ @NotBlank private String cateName; /** 排序 */ private Integer sort; /** 圖示 */ private String pic; /** 是否推薦 */ private Integer isShow; /** 新增時間 */ @TableField(fill= FieldFill.INSERT) private Timestamp createTime; /** 更新時間 */ @TableField(fill= FieldFill.INSERT_UPDATE) private Timestamp updateTime; /** 刪除狀態 */ private Integer isDel; public void copy(Category source){ BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); } }
Dto層:
package com.wyr.modules.example.service.dto; import lombok.Data; import java.sql.Timestamp; import java.io.Serializable; import java.util.List; /** * @author jianyijun * @date 2022-07-02 */ @Data public class CategoryDto implements Serializable { /** 商品分類表ID */ private Long id; /** 父id */ private Long pid; /** 分類名稱 */ private String cateName; /** 排序 */ private Integer sort; /** 圖示 */ private String pic; /** 是否推薦 */ private Integer isShow; /** 新增時間 */ private Timestamp createTime; /** 更新時間 */ private Timestamp updateTime; /** 刪除狀態 */ private Integer isDel; private List<CategoryDto> children; }
這裡注意一下Dto層多餘的欄位:private List<CategoryDto> children;
,這個也就是一個自己的集合,代表自己的孩子
3:這裡介紹一下什麼是Dto層,以及一些區別:
(1) entity 裡的每一個欄位,與資料庫相對應,
(2) vo 裡的每一個欄位,是和你前臺 html 頁面相對應,
(3) dto 這是用來轉換從 entity 到 vo,或者從 vo 到 entity 的中間的東西 。(DTO中擁有的欄位應該是entity中或者是vo中的一個子集)
4:然後是controller層:
ResponseEntity<Object>
不用管,是一個通用的返回資料封裝類,然後中間那行就是最裡面使用了QueryHelp工具,可以不寫SQL語句進行條件查詢,然後convert就是一個複製方法,可以類似於BeanUtils裡面的copy等等,這就是先將查詢到的list複製給Dto類,然後我們進入接下來的Service方法:buildTree:
5:業務層:
/** * 構建分類樹 * @param categoryDtos 原始資料 * @return */ @Override public Map<String, Object> buildTree(List<CategoryDto> categoryDtos) { List<CategoryDto> trees = new ArrayList<>(); Set<Long> ids = new HashSet<>(); for (CategoryDto categoryDto :categoryDtos) { if (categoryDto.getPid() == 0) { trees.add(categoryDto); } for (CategoryDto it : categoryDtos) { if (it.getPid().equals(categoryDto.getId())) { if (categoryDto.getChildren() == null) { categoryDto.setChildren(new ArrayList<>()); } categoryDto.getChildren().add(it); ids.add(it.getId()); } } } Map<String, Object> map = new HashMap<>(2); if (trees.size() == 0){ trees = categoryDtos.stream().filter(s -> !ids.contains(s.getId())).collect(Collectors.toList()); } map.put("content",trees); map.put("totalElements", categoryDtos.size()); return map; } }
到此這篇關於Springboot實現給前端返回一個tree結構方法的文章就介紹到這了,更多相關Springboot tree結構內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45