一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java實現省市區轉換成樹形結構

java實現省市區轉換成樹形結構

2021-11-15 13:24super小蘇打 Java教程

這篇文章主要為大家詳細介紹了java實現省市區轉換成樹形結構,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了java實現省市區轉換成樹形結構的具體代碼,供大家參考,具體內容如下

前言:為什我想寫這篇博客呢?第一方面是記錄,另一方面是分享。

1.創建數據庫表

1.建表語句

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
CREATE TABLE `area`  (
  `AREA_CODE` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '區域ID',
  `AREA_NAME` varchar(512) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '區域名稱',
  `SUPERIOR_CODE` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '父級代碼',
  `AREA_LEVEL` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '級別',
  `AREA_SORT` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '排序',
  `REMARK` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '備注',
  `DELETE_FLAG` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '刪除標識',
  `CREATED_BY` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '創建人',
  `CREATION_TIME` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '創建時間',
  `UPDATED_BY` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '更新人',
  `UPDATE_TIME` timestamp(0) NOT NULL DEFAULT '2020-01-01 00:00:00' COMMENT '更新時間',
  PRIMARY KEY (`AREA_CODE`) USING BTREE,
  UNIQUE INDEX `UK_T_PUB_AREA_AREA_CODE`(`AREA_CODE`) USING BTREE,
  INDEX `IDX_T_PUB_AREA_AREA_LEVEL`(`AREA_LEVEL`) USING BTREE,
  INDEX `IDX_T_PUB_AREA_SUPERIOR_CODE`(`SUPERIOR_CODE`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '區域表' ROW_FORMAT = DYNAMIC;
 
SET FOREIGN_KEY_CHECKS = 1;

建表完成的table樣式:

java實現省市區轉換成樹形結構

2.創建java實體

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
package org.labib.pojo;
 
import java.util.Date;
 
public class Area {
    //區域ID
    private String areaCode;
    //區域名稱
    private String areaName;
    //父級代碼
    private String superiorCode;
    //級別
    private String areaLevel;
    //排序
    private String areaSort;
    //備注
    private String remark;
    //刪除標識
    private String deleteFlag;
    //創建人
    private String createdBy;
    //創建時間
    private Date creationTime;
    //更新人
    private String updatedBy;
    //更新時間
    private Date updateTime;
 
    public String getAreaCode() {
        return areaCode;
    }
 
    public void setAreaCode(String areaCode) {
        this.areaCode = areaCode == null ? null : areaCode.trim();
    }
 
    public String getAreaName() {
        return areaName;
    }
 
    public void setAreaName(String areaName) {
        this.areaName = areaName == null ? null : areaName.trim();
    }
 
    public String getSuperiorCode() {
        return superiorCode;
    }
 
    public void setSuperiorCode(String superiorCode) {
        this.superiorCode = superiorCode == null ? null : superiorCode.trim();
    }
 
    public String getAreaLevel() {
        return areaLevel;
    }
 
    public void setAreaLevel(String areaLevel) {
        this.areaLevel = areaLevel == null ? null : areaLevel.trim();
    }
 
    public String getAreaSort() {
        return areaSort;
    }
 
    public void setAreaSort(String areaSort) {
        this.areaSort = areaSort == null ? null : areaSort.trim();
    }
 
    public String getRemark() {
        return remark;
    }
 
    public void setRemark(String remark) {
        this.remark = remark == null ? null : remark.trim();
    }
 
    public String getDeleteFlag() {
        return deleteFlag;
    }
 
    public void setDeleteFlag(String deleteFlag) {
        this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim();
    }
 
    public String getCreatedBy() {
        return createdBy;
    }
 
    public void setCreatedBy(String createdBy) {
        this.createdBy = createdBy == null ? null : createdBy.trim();
    }
 
    public Date getCreationTime() {
        return creationTime;
    }
 
    public void setCreationTime(Date creationTime) {
        this.creationTime = creationTime;
    }
 
    public String getUpdatedBy() {
        return updatedBy;
    }
 
    public void setUpdatedBy(String updatedBy) {
        this.updatedBy = updatedBy == null ? null : updatedBy.trim();
    }
 
    public Date getUpdateTime() {
        return updateTime;
    }
 
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
}

3.創建mapper

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package org.labib.mapper;
 
 
import org.labib.pojo.Area;
 
import java.util.List;
import java.util.Map;
public interface AreaMapper {
    int deleteByPrimaryKey(String areaCode);
 
    int insert(Area record);
 
    int insertSelective(Area record);
 
    Area selectByPrimaryKey(String areaCode);
 
    int updateByPrimaryKeySelective(Area record);
 
    int updateByPrimaryKey(Area record);
    List<Area> queryAreaAll();
    List<Map<String, String>> queryMap();
}

4.創建service

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Service("AreaService")
public class AreaService {
    @Autowired
    private AreaMapper areaMapper;
    //修建
   public String queryArea(){
       List<Area> mapList = areaMapper.queryAreaAll();
       JSONArray result = ListToTree.buildTree(JSONArray.parseArray(JSON.toJSONString(mapList)),"areaCode","superiorCode","children");
       return result.toJSONString();
   }    //修建
   public String queryAreaCode(){
       List<Map<String, String>> mapList = areaMapper.queryMap();
       JSONArray result = ListToTree.buildTree(JSONArray.parseArray(JSON.toJSONString(mapList)),"value","superiorCode","children");
       return result.toJSONString();
   }
}

并附上轉換成樹形結構的工具類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
public class ListToTree {
    public static JSONArray buildTree(JSONArray arr, String id, String pid, String Chirden) {
        //新建一個JSONArray來接收組裝成樹形結構的返回值
        JSONArray jsonArray = new JSONArray();
        //新建一個JSONObject對象
        JSONObject hash = new JSONObject();
        //將數組轉換為object格式
        for (int i = 0; i < arr.size(); i++) {
            //獲取當前的JSON對象
            JSONObject json = (JSONObject) arr.get(i);
            //把當前id作為鍵,當前JSON對象作為值 put回hash這個Object對象中
            //這里的put方法類似于map的put方法
            hash.put(json.getString(id), json);
        }
        //遍歷結果集
        for (int j = 0; j < arr.size(); j++) {
            //單條記錄
            JSONObject aVal = (JSONObject) arr.get(j);
            //在hash中取出key為單條記錄中pid的值
            String pidStr = "";
            //如果父級id不等于null
            if (aVal.get(pid) != null) {
                pidStr = aVal.get(pid).toString();
            }
            //從hash這個對象中獲取父級對象  parent
            JSONObject hashParent = (JSONObject) hash.get(pidStr);
            //如果記錄的pid存在,則說明它有父節點,將她添加到孩子節點的集合中
            if (hashParent != null) {
                //檢查是否有child屬性
                if (hashParent.get(Chirden) != null) {
                    //有子節點 則先將子節點取出
                    JSONArray children = (JSONArray) hashParent.get(Chirden);
                    //然后把當前這個對象放進子節點之中
                    children.add(aVal);
                    //最后把子節點在放回父節點之中
                    hashParent.put(Chirden, children);
                } else {
                    //無子節點 則新建一個子節點
                    JSONArray children = new JSONArray();
                    //然后再把當前對象放進去
                    children.add(aVal);
                    //最后在放回父節點之中
                    hashParent.put(Chirden, children);
                }
            } else {
                jsonArray.add(aVal);
            }
        }
        return jsonArray;
 
    }
}

5.創建controller

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@RestController
public class AreaController {
    @Resource
    private AreaService areaService;
 
    @RequestMapping(value = "/area",method = RequestMethod.POST)
    public String queryArea() {
        return areaService.queryArea();
    }
    @RequestMapping(value = "/area1",method = RequestMethod.POST)
    public String queryAreaDemo() {
        return areaService.queryAreaCode();
    }
}

6.接口測試

測試結果:

java實現省市區轉換成樹形結構

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/qq_45256805/article/details/119565617

延伸 · 閱讀

精彩推薦
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
主站蜘蛛池模板: 女子校生下媚药在线观看 | www在线看| 精品久久香蕉国产线看观看麻豆 | 9丨精品国产高清自在线看 9久热这里只有精品免费 | 男人影院在线观看 | 91久| 免费看视频 | 黑人巨大初黑人解禁作品 | 亚洲 综合 欧美在线视频 | 亚洲咪咪 | 小小水蜜桃视频高清在线播放 | 风间由美被义子中文字幕 | 嘿嘿午夜 | 国产精品国产国产aⅴ | 亚洲精品国产在线网站 | 久久一本综合 | 精新精新国产自在现 | 男人影院天堂网址 | 色婷婷天天综合在线 | 国产一区二区三区四区波多野结衣 | 免费高清资源黄网站在线观看 | 美女无内裤下部黄 | 关晓彤被调教出奶水的视频 | 动漫美女胸被狂揉扒开吃奶动态图 | 精品国产品国语在线不卡丶 | 日韩免费在线观看 | 四虎2020紧急免费入口 | 国产美女亚洲精品久久久综合91 | 奇米影视亚洲狠狠色 | 九色PORNY真实丨国产大胸 | 亚洲欧美综合一区 | 日韩精品视频观看 | 香蕉在线播放 | 四虎最新永久免费网址 | 精品福利一区 | 青草午夜精品视频在线观看 | 国产精品调教 | 日本精品中文字幕在线播放 | 国产精品拍拍拍福利在线观看 | 国产资源视频在线观看 | 网站色小妹 |