app开发者平台在数字化时代的重要性与发展趋势解析
973
2022-10-11
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
获取列表
List
List
for (UserVo r : userList) {
UserVo user = new UserVo();
user.setId(r.getId());
user.setParentId(r.getParentId());
user.setName(r.getName());
List
user.setChildren(children);
users.add(user);
}
public List
List
List
if(users){
for (UserVo u : users) {
UserVo user = new UserVo();
user.setId(u.getId());
user.setName(u.getName());
user.setParentId(u.getParentId());
List
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
List
List
if(users){
for (UserVo u : users) {
UserVo user = new UserVo();
user.setId(u.getId());
user.setName(u.getName());
user.setParentId(u.getParentId());
List
user.setChildren(children);
userList.add(user);
}
}
return userList;
}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~