这篇文章主要介绍“Java接口返回省市区树形结构如何实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java接口返回省市区树形结构如何实现”文章能帮助大家解决问题。前言最近和前端联调接口,需要进行
这篇文章主要介绍“Java接口返回省市区树形结构如何实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java接口返回省市区树形结构如何实现”文章能帮助大家解决问题。
最近和前端联调接口,需要进行一个省市区联动,最终定的方案是通过接口返回一个树形结构给前端,类似这样的结构:
表结构已经准备好了,直接执行即可。
由于数据量较大,这里放不下,需要的伙伴们可以私聊我
CREATE TABLE `sys_region` ( `id` int(19) NOT NULL AUTO_INCREMENT COMMENT 'id', `pid` int(19) NULL DEFAULT NULL COMMENT '上级ID,一级为0', `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', `tree_level` int(3) NULL DEFAULT NULL COMMENT '层级', `leaf` int(3) NULL DEFAULT NULL COMMENT '是否叶子节点 0:否 1:是', `sort` int(19) NULL DEFAULT NULL COMMENT '排序', `create_by` varchar(19) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建者', `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', `update_by` varchar(19) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新者', `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 820202 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '行政区域' ROW_FORMAT = Dynamic;
下面分享Java相关的代码
entity
实体就是这个表的属性,这里最后一个属性childList就是用来存放子列表的,可以先建一个VO,我直接写在实体里面了。
package org.jeecg.modules.entity;import java.io.Serializable;import java.io.UnsupportedEncodingException;import java.util.Date;import java.math.BigDecimal;import java.util.List;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 lombok.Data;import com.fasterxml.jackson.annotation.JSONFormat;import org.springframework.format.annotation.DateTimeFormat;import org.jeecgframework.poi.excel.annotation.Excel;import org.jeecg.common.aspect.annotation.Dict;import io.swagger.annotations.apiModel;import io.swagger.annotations.ApiModelProperty;import lombok.EqualsAndHashCode;import lombok.experimental.Accessors;@Data@TableName("sys_region")@Accessors(chain = true)@EqualsAndHashCode(callSuper = false)@ApiModel(value = "sys_region对象", description = "行政区域")public class SysRegion implements Serializable { private static final long serialVersionUID = 1L; @TableId(type = IdType.ASSIGN_ID) @ApiModelProperty(value = "id") private Integer id; @Excel(name = "上级ID,一级为0", width = 15) @ApiModelProperty(value = "上级ID,一级为0") private Integer pid; @Excel(name = "名称", width = 15) @ApiModelProperty(value = "名称") private String name; @Excel(name = "层级", width = 15) @ApiModelProperty(value = "层级") private Integer treeLevel; @Excel(name = "是否叶子节点 0:否 1:是", width = 15) @ApiModelProperty(value = "是否叶子节点 0:否 1:是") private Integer leaf; @Excel(name = "排序", width = 15) @ApiModelProperty(value = "排序") private Integer sort; @ApiModelProperty(value = "创建者") private String createBy; @jsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "创建时间") private Date createTime; @ApiModelProperty(value = "更新者") private String updateBy; @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "更新时间") private Date updateTime; @TableField(exist = false) //表示这个属性不属于表中的字段 private List<SysRegion> childList;}
service
List<SysRegion> queryAllProvinceTree();
serviceImpl
@Override public List<SysRegion> queryAllProvinceTree() { // 获取全部区域 List<SysRegion> list = this.query().list(); // 省区域 List<SysRegion> provinceListOneLevelRegion = list.stream().filter(item -> item.getPid().intValue()==0).collect(Collectors.toList()); //遍历一级地区 provinceListOneLevelRegion.stream().forEach(oneItem -> { //获得二级 List<SysRegion> twoLevelRegion = list.stream().filter(twoItem -> twoItem.getPid().intValue() == oneItem.getId().intValue()) .collect(Collectors.toList()); //遍历二级 twoLevelRegion.stream().forEach(twoItem -> { //获得三级 List<SysRegion> threeLevelRegion = list.stream().filter(threeItem -> threeItem.getPid().intValue() == twoItem.getId().intValue()) .collect(Collectors.toList()); twoItem.setChildList(threeLevelRegion); }); oneItem.setChildList(twoLevelRegion); } ); // 最终的树形结构列表 return provinceListOneLevelRegion; }
controller
@ApiOperation(value = "行政区域-查询所有省级区域以树形式展示关系", notes = "行政区域-查询所有省级区域以树形式展示关系") @GetMapping(value = "/queryAllProvinceTree") public Result<?> queryAllProvinceTree() { return Result.OK(SysRegionService.queryAllProvinceTree()); }
以上代码写完之后,就可以调用接口了,返回格式如下:
关于“Java接口返回省市区树形结构如何实现”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。
--结束END--
本文标题: Java接口返回省市区树形结构如何实现
本文链接: https://www.lsjlt.com/news/348180.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-13
2024-05-13
2024-05-13
2024-05-13
2024-05-13
2024-05-13
2024-05-12
2024-05-12
2024-05-12
2024-05-12
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0