公司有个业务需要查出所有的用户权限分类,并将最后一层类别所包含的权限查出来。
数据库说明,有一个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查询:
最终的数据结构:
{ "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查询改为 :
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
到此这篇关于springboot、mybatis返回树结构的数据实现的文章就介绍到这了,更多相关springboot、mybatis返回树结构 内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!