hibernate树形菜单后端

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));
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值