宠物用品网站建设,做网站不推广,1000套网站源码,php网站容量开发中#xff0c;经常遇到存在树形结构的数据#xff0c;如行政区划这类数据#xff0c;一级一级分层#xff0c;后端需要组装好树形结构数据返回给前端。
由于返给前端的json数据中#xff0c;如果是叶子节点了#xff0c;说明它没有子节点#xff0c;那么就没必要返…开发中经常遇到存在树形结构的数据如行政区划这类数据一级一级分层后端需要组装好树形结构数据返回给前端。
由于返给前端的json数据中如果是叶子节点了说明它没有子节点那么就没必要返回chirldren 属性给前端了此时只需要加一个注解即可JsonInclude(JsonInclude.Include.NON_EMPTY)该注解会自动判断集合是否为空为空的话就不返回给前端展示了。如果是String类型的属性的话就使用JsonInclude(JsonInclude.Include.NON_NULL)注解
实体类
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
import lombok.experimental.Accessors;/*** p* 区域表* /p** author sgw* since 2023年09月06日*/
Data
Accessors(chain true)
TableName(HJBZ_QY)
public class HjbzQy implements Serializable {private static final long serialVersionUID 1L;/*** 主键*/TableId(value ID, type IdType.AUTO)private String id;/*** 区域名称 0表示顶级区域*/TableField(QYMC)private String qymc;/*** 区域编码 0表示顶级区域*/TableField(QYBM)private String qybm;/*** 父级区域名称*/TableField(PARENT_QYMC)private String parentQymc;/*** 父级ID*/TableField(PID)private String pid;/*** 封装树结构数据* exist设置该属性为 false表示在查询中不使用该字段* JsonInclude(JsonInclude.Include.NON_EMPTY): 为空时就不返回给前端了说明是叶子节点了没必要返给前端一个空集合*/JsonInclude(JsonInclude.Include.NON_EMPTY)TableField(exist false)ListHjbzQy chirldren new ArrayList();
}import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ts.hjbz.entity.HjbzQy;
import com.ts.hjbz.dao.HjbzQyMapper;
import com.ts.hjbz.service.HjbzQyService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.ArrayList;
import java.util.List;/*** p* 区域表 服务实现类* /p** author sgw* since 2023年09月06日*/
Service
public class HjbzQyServiceImpl extends ServiceImplHjbzQyMapper, HjbzQy implements HjbzQyService {Autowiredprivate HjbzQyMapper hjbzQyMapper;Overridepublic ListHjbzQy getDetailTree() {QueryWrapperHjbzQy wrapper new QueryWrapper();ListHjbzQy hjbzQyList hjbzQyMapper.selectList(wrapper);//顶级节点的pid是0ListHjbzQy tree createTree(hjbzQyList, 0);return tree;}/*** 递归建立树形结构 算法* param lists* param pid* return*/private ListHjbzQy createTree(ListHjbzQy lists, String pid) {ListHjbzQy tree new ArrayList();for (HjbzQy qy : lists) {if (qy.getPid() .equals(pid) ) {qy.setChirldren(createTree(lists,qy.getId()));tree.add(qy);}}return tree;}
}