package com.zking.dao.impl;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.Transaction;import org.hibernate.engine.transaction.jta.platform.internal.BorlandEnterpriseServerJtaPlatform;
import org.hibernate.query.Query;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.zking.dao.ISysrightDao;
import com.zking.entity.Sysright;
import com.zking.entity.TreeNode;
import com.zking.util.SessionFactoryUtil;
/**
*
- @ClassName: SysrightDaoImpl
- @Description: TODO(权限实现接口类)
- @author A18ccms a18ccms_gmail_com
- @date 2018年11月26日 下午4:56:09
/
public class SysrightDaoImpl implements ISysrightDao {
/*
*
- @Title: SysrightList
- @Description: TODO(hibernate数据查询)
- @param @param sysright
- @param @return 参数
- @return List<Map<String,Object>> 返回类型
- @throws
/
private List<Map<String, Object>> SysrightList(Sysright sysright){
Session session = SessionFactoryUtil.getSession();
Transaction transaction = session.beginTransaction();
String sql=“from Sysright where 1=1”;
//判断查父节点还是子节点
if(sysright.getRightcode()!=null) {
sql+=" and rightcode=’"+sysright.getRightcode()+"’";
}else {
sql+=" and rightparentcode=’"+sysright.getRightparentcode()+"’";
}
Query query = session.createQuery(sql);
List list = query.list();
List<Map<String, Object>> list1=new ArrayList<>();
Map<String, Object> map=null;
for (Sysright s : list) {
map=new HashMap<>();
map.put(“id”, s.getRightcode());
map.put(“name”, s.getRighttext());
map.put(“url”, s.getRighturl());
map.put(“spread”, “true”);
list1.add(map);
}
transaction.commit();
session.close();
return list1;
}
/* - @Title: mapToTreeNode
- @Description: TODO(直接查出来的数据不能展示,转换成可展示的数据)
- @param @param s
- @param @param treeNode 参数
- @return void 返回类型
- @throws
/
private void mapToTreeNode(Map<String, Object> s, TreeNode treeNode) {
treeNode.setId(s.get(“id”).toString());
treeNode.setName(s.get(“name”).toString());
if(s.get(“url”)!=null) {
treeNode.setUrl(s.get(“url”).toString());
}
treeNode.setSpread(true);
treeNode.setAttributes(s);
Sysright sysright=new Sysright();
sysright.setRightparentcode(s.get(“id”).toString());
//查询子节点
List<Map<String, Object>> sysrightList = SysrightList(sysright);
List list=new ArrayList<>();
ToTreeList(sysrightList, list);
treeNode.setChildren(list);
}
/* - @Title: ToTreeList
- @Description: TODO(添加数据)
- @param @param sysrightList1
- @param @param ListtreeNode 参数
- @return void 返回类型
- @throws
*/
private void ToTreeList(List<Map<String, Object>> sysrightList1,List ListtreeNode) {
TreeNode treeNode=null;
//根据父节点循环查询子节点并添加
for (Map<String, Object> s : sysrightList1) {
treeNode=new TreeNode();
mapToTreeNode(s, treeNode);
ListtreeNode.add(treeNode);
}
}
/**
- 这个方法的返回值,才是符合树形菜单所需要的json格式
*/
@Override
public List TreeList(Sysright sysright){
//查询父节点
List<Map<String, Object>> sysrightList1 = SysrightList(sysright);
List treeNode=new ArrayList<>();
ToTreeList(sysrightList1,treeNode);
return treeNode;
}
/**
*
- @Title: main
- @Description: TODO(测试)
- @param @param args
- @param @throws Exception 参数
- @return void 返回类型
- @throws
*/
public static void main(String[] args) throws Exception {
SysrightDaoImpl sd=new SysrightDaoImpl();
Sysright sysright=new Sysright();
sysright.setRightcode(“00”);
List treeList = sd.TreeList(sysright);
//测试格式是否正确,采用的是:jackson-databind-2.2.3.jar包
ObjectMapper om=new ObjectMapper();
System.out.println(om.writeValueAsString(treeList));
}
}