欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot、mybatis返回樹(shù)結(jié)構(gòu)的數(shù)據(jù)實(shí)現(xiàn)

 更新時(shí)間:2022年04月19日 08:53:09   作者:華大哥  
本文主要介紹了SpringBoot、mybatis返回樹(shù)結(jié)構(gòu)的數(shù)據(jù)實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

公司有個(gè)業(yè)務(wù)需要查出所有的用戶(hù)權(quán)限分類(lèi),并將最后一層類(lèi)別所包含的權(quán)限查出來(lái)。

數(shù)據(jù)庫(kù)說(shuō)明,有一個(gè)parent_id 字段是最好的:、

parent_id的值就是上級(jí)的id,一般的話,最頂級(jí)的parent_id是設(shè)置為0

先看看表結(jié)構(gòu):

 下面不說(shuō)廢話,直接上代碼:

定義的vo類(lèi):

    @ApiModelProperty("id")
    private Long id;
 
    @ApiModelProperty("父ID")
    private Long parentId;
 
    
    @ApiModelProperty("名稱(chēng)")
    private String name;
	
	@ApiModelProperty("子節(jié)點(diǎn)")
    private List<UserVo> children;

 獲取列表

    List<UserVo>  userList userService.findUsersAndChildrenList(User);
    List<UserVo> users = new ArrayList<>();
        for (UserVo r : userList) {
            UserVo user = new UserVo();
            user.setId(r.getId());
            user.setParentId(r.getParentId());
            user.setName(r.getName());
            List<UserVo>  children = this.getChildrenList(r.getId(), status);
            user.setChildren(children);
            users.add(user);
     }
    public List<UserVo> getChildrenList(Long cid){
        List<UserVo> users=  userService.findUserChildrenByParentId(cid);
        List<UserVo> userList= new ArrayList<>();
        if(users){
            for (UserVo u : users) {
                UserVo user = new UserVo();
                user.setId(u.getId());
                user.setName(u.getName());
                user.setParentId(u.getParentId());
                List<UserVo >  children = this.getChildrenList(u.getId());
                user.setChildren(children);
                userList.add(user);
            }
        }
        return  userList;
    }

 mybatis查詢(xún):

<select id="findUserChildrenList" resultMap="BaseResultMap">
        SELECT *
        FROM user
        WHERE parent_id=#{id}
</select>

最終的數(shù)據(jù)結(jié)構(gòu):

{
    "message":'獲取成功',
    "data":{
        "num":1,
        "pageSize":20,
        "total":1,
        "list":[
            {
                "id":6,
                "name":"測(cè)試",
                "parent_id":1,
                "children":[
                    {
                        "id":9,
						"name":"測(cè)試1",
						"parent_id":6,
                        "children":[
                            {
                                "id":20,
								"name":"測(cè)試2",
								"parent_id":9,
                                "children":[
                                    {
                                        "id":21,
										"name":"測(cè)試3",
										"parent_id":20,
                                    },
                                    {
                                        "id":22,
										"name":"測(cè)試4",
										"parent_id":20,
                                    },
                                    {
                                         "id":23,
										"name":"測(cè)試5",
										"parent_id":20,
                                    }
                                ], 
                            }
                        ], 
                    }, 
                ], 
            }
        ]
    },
    "code":200
}

 如果要查某個(gè)節(jié)點(diǎn)的所有父節(jié)點(diǎn):

 mybatis查詢(xún)改為 :

<select id="findUserParentListById" resultMap="BaseResultMap">
        SELECT *
        FROM user
        WHERE id=#{id}
</select>
    public List<UserVo> getParentList(Long cid){
        List<UserVo> users=  userService.findUserParentListById(cid);
        List<UserVo> userList= new ArrayList<>();
        if(users){
            for (UserVo u : users) {
                UserVo user = new UserVo();
                user.setId(u.getId());
                user.setName(u.getName());
                user.setParentId(u.getParentId());
                List<UserVo >  children = this.getParentList(u.getParentId());
                user.setChildren(children);
                userList.add(user);
            }
        }
        return  userList;
    }

到此這篇關(guān)于SpringBoot、mybatis返回樹(shù)結(jié)構(gòu)的數(shù)據(jù)實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)SpringBoot、mybatis返回樹(shù)結(jié)構(gòu) 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Android實(shí)現(xiàn)兼容的水波紋效果

    Android實(shí)現(xiàn)兼容的水波紋效果

    Android的水波紋效果只有高版本才有,我們希望自己的應(yīng)用在低版本用低版本的陰影,而高版本用水波紋,這怎么做呢?下面一起來(lái)學(xué)習(xí)學(xué)習(xí)。
    2016-08-08
  • Netty粘包拆包及使用原理詳解

    Netty粘包拆包及使用原理詳解

    Netty是由JBOSS提供的一個(gè)java開(kāi)源框架,現(xiàn)為?Github上的獨(dú)立項(xiàng)目。Netty提供異步的、事件驅(qū)動(dòng)的網(wǎng)絡(luò)應(yīng)用程序框架和工具,用以快速開(kāi)發(fā)高性能、高可靠性的網(wǎng)絡(luò)服務(wù)器和客戶(hù)端程序,這篇文章主要介紹了Netty粘包拆包及使用原理
    2022-08-08
  • Spring中自定義攔截器的使用

    Spring中自定義攔截器的使用

    大家好,本篇文章主要講的是Spring中自定義攔截器的使用,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • Java語(yǔ)法之 Java 的多態(tài)、抽象類(lèi)和接口

    Java語(yǔ)法之 Java 的多態(tài)、抽象類(lèi)和接口

    上節(jié)介紹了 Java 基礎(chǔ)語(yǔ)法之解析 Java 的包和繼承,如果這類(lèi)知識(shí)有點(diǎn)疑惑的小伙伴,可以去 Java 的包和繼承 這章看看,或許可以幫你解決一些疑惑喲!今天這篇文章我們將講解的是 Java 的多態(tài)、抽象類(lèi)和接口,感興趣的小伙伴可以參考下面文章的具體內(nèi)容
    2021-09-09
  • Java中的TreeSet集合詳解

    Java中的TreeSet集合詳解

    這篇文章主要介紹了Java中的TreeSet集合詳解,TreeSet 是一個(gè) 有序集合,它擴(kuò)展了 AbstractSet 類(lèi)并實(shí)現(xiàn)了 NavigableSet 接口,作為自平衡二叉搜索樹(shù),二叉樹(shù)的每個(gè)節(jié)點(diǎn)包括一個(gè)額外的位,用于識(shí)別紅色或黑色的節(jié)點(diǎn)的顏色,需要的朋友可以參考下
    2023-09-09
  • Java中File類(lèi)方法詳解以及實(shí)踐

    Java中File類(lèi)方法詳解以及實(shí)踐

    Java File類(lèi)的功能非常強(qiáng)大,利用java基本上可以對(duì)文件進(jìn)行所有操作,下面這篇文章主要給大家介紹了關(guān)于Java中File類(lèi)方法以及實(shí)踐的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • java代碼獲取數(shù)據(jù)庫(kù)表里數(shù)據(jù)的總數(shù)操作

    java代碼獲取數(shù)據(jù)庫(kù)表里數(shù)據(jù)的總數(shù)操作

    這篇文章主要介紹了java代碼獲取數(shù)據(jù)庫(kù)表里數(shù)據(jù)的總數(shù)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • idea中MavenWeb項(xiàng)目不能創(chuàng)建Servlet的解決方案

    idea中MavenWeb項(xiàng)目不能創(chuàng)建Servlet的解決方案

    這篇文章主要介紹了idea中MavenWeb項(xiàng)目不能創(chuàng)建Servlet的解決方案,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 如何徹底刪除SVN中的文件和文件夾(附恢復(fù)方法)

    如何徹底刪除SVN中的文件和文件夾(附恢復(fù)方法)

    在SVN中如果刪除某個(gè)文件或文件夾也可以在歷史記錄中進(jìn)行找回,有的時(shí)候需要徹底刪除某些文件,即不希望通過(guò)歷史記錄進(jìn)行恢復(fù),需要在服務(wù)器上對(duì)SVN的數(shù)據(jù)進(jìn)行重新整理
    2014-08-08
  • mybatis foreach標(biāo)簽的使用詳解

    mybatis foreach標(biāo)簽的使用詳解

    這篇文章主要介紹了mybatis foreach標(biāo)簽的使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06

最新評(píng)論