SpringBoot、mybatis返回树结构的数据实现

网友投稿 312 2022-08-13


SpringBoot、mybatis返回树结构的数据实现

公司有个业务需要查出所有的用户权限分类,并将最后一层类别所包含的权限查出来。

数据库说明,有一个parent_id 字段是最好的:、

parent_id的值就是上级的id,一般的话,最顶级的parent_id是设置为0。

先看看表结构:

下面不说废话,直接上代码:

定义的vo类:

@ApiModelProperty("id")

private Long id;

@ApiModelProperty("父ID")

private Long parentId;

@ApiModelProperty("名称")

private String name;

@ApiModelProperty("子节点")

private List children;

获取列表

List userList userService.findUsersAndChildrenList(User);

List users = new ArrayList<>();

for (UserVo r : userList) {

UserVo user = new UserVo();

user.setId(r.getId());

user.setParentId(r.getParentId());

user.setName(r.getName());

List children = this.getChildrenList(r.getId(), status);

user.setChildren(children);

users.add(user);

}

public List getChildrenList(Long cid){

List users= userService.findUserChildrenByParentId(cid);

List 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 children = this.getChildrenList(u.getId());

user.setChildren(children);

userList.add(user);

}

}

return userList;

}

mybatis查询:

SELECT *

FROM user

WHERE parent_id=#{id}

最终的数据结构:

{

"message":'获取成功',

"data":{

"num":1,

"pageSize":20,

"total":1,

"list":[

{

"id":6,

"name":"测试",

"parent_id":1,

"children":[

{

XTUaLObng"id":9,

"name":"测试1",

"parent_id":6,

"children":[

{

"id":20,

"name":"测试2",

"parent_id":9,

"children":[

{

"id":21,

"name":"测试3",

"parent_id":20,

},

{

"id":22,

"name":"测试4",

"parent_id":20,

},

{

"id":23,

"name":"测试5",

"parent_id":20,

}

],

}

],

},

],

}

]

},

"code":200

}

如果要查某个节点的所有父节点:

mybatis查询改为 :

SELECT *

FROM user

WHERE id=#{id}

public List getParentList(Long cid){

List users= userService.findUserParentListById(cid);

List 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 children = this.getParentList(u.getParentId());

user.setChildren(children);

userList.add(user);

}

}

return userList;

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java垃圾回收机制的示例详解
下一篇:springboot打war包部署到外置tomcat容器的方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~