62,620
社区成员
发帖
与我相关
我的任务
分享public static List<TreeData> findMenuTreeData(String roleUuid) {
List<TreeData> list=new ArrayList<TreeData>();
try {
PQL pql = new PQL();
session = pql.getDefaultDataSource().createSession();
String sql = "SELECT * FROM systemaction WHERE UUID IN(SELECT actionuuid FROM systemactiongroup WHERE roleuuid='"+roleUuid+"') AND puuid='0' AND ismenu='1'";
SqlResultSet rs = session.queryBySQL(sql);
while (rs.next()) {//第一层
TreeData td=new TreeData();
td.setId(rs.getString("uuid"));
td.setText(rs.getString("actionname"));
td.setAttributes(new ItemData(rs.getString("action") , rs.getString("actionname")));
List<TreeData> sublist=new ArrayList<TreeData>();
String sql2 = "SELECT * FROM systemaction WHERE UUID IN(SELECT actionuuid FROM systemactiongroup WHERE roleuuid='"+roleUuid+"') AND puuid='"+td.getId()+"' AND ismenu='1'";
SqlResultSet rs2 = session.queryBySQL(sql2);
while (rs2.next()) {//第二层
TreeData t=new TreeData();
t.setId(rs2.getString("uuid"));
t.setText(rs2.getString("actionname"));
t.setAttributes(new ItemData(rs2.getString("action"), rs.getString("actionname")+">--->"+rs2.getString("actionname")));
sublist.add(t);
}
td.setChildren(sublist);//将第二层设为第一层子节点
list.add(td);//最后都加到list中便于前台展示
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (null != session) session.closeSession();
}
return list;
}
public static void main(String[] args) {
List<TreeData> list = new ArrayList<TreeData>();
List<TreeData> datas = AuthorityHelper.findMenuTreeData("0O5v62zr3b");
for (int i = 0; i < datas.size(); i++) {
System.out.println(datas.get(i).getAttributes().getTitle() + "\t" + datas.get(i).getAttributes().getUrl());
for (int j = 0; j < datas.get(i).getChildren().size(); j++) {
System.out.println("-----\t"+datas.get(i).getChildren().get(j).getAttributes().getTitle() + "\t" + datas.get(i).getChildren().get(j).getAttributes().getUrl());
}
}
}public List<TreeData> ff(pid){
新建一个List<TreeData>对象 list
根据pid查询数据库得到记录集rs
遍历rs{
新建一个TreeData对象td
取出一条记录r
用r对td的各个属性赋值
如果r的isMenu属性为true{
以r的id为参数,调用ff() //注意:这一步就是所谓的递归调用
将得到的结果赋予td的sublist属性
}
将td加入list
}
返回list
}