Dao层接口:
/** * @Title: IVoteTreeDao.java * @Package org.dao * @Description: TODO该方法的主要作用: * @author A18ccms A18ccms_gmail_com * @date 2017-5-6 下午10:38:47 * @version V1.0 */ package org.dao; import java.util.List; import org.entity.VoteTree; /** * * 项目名称:testTree * 类名称:IVoteTreeDao * 类描述: * 创建人:Mu Xiongxiong * 创建时间:2017-5-6 下午10:38:47 * 修改人:Mu Xiongxiong * 修改时间:2017-5-6 下午10:38:47 * 修改备注: * @version * */ public interface IVoteTreeDao { //查询最小的level Long minId(); //根据最小的查询所有一级菜单 List<VoteTree> getFirstLevel(Long minLevel); //根据pid查询所有相对应的子集 List<VoteTree> getNextSubSet(VoteTree tvote); //递归查询 List<VoteTree> getDeeptLevel(VoteTree tvote); }
HibernateBaseDao实现:
/** * @Title: BaseHibernateDao.java * @Package org.dao * @Description: TODO该方法的主要作用: * @author A18ccms A18ccms_gmail_com * @date 2017-5-6 下午1:50:18 * @version V1.0 */ package org.dao; import org.hibernate.Session; import org.util.HibernateUtil; /** * * 项目名称:votedemo * 类名称:BaseHibernateDao * 类描述: hibernate的工具类BaseDao * 创建人:Mu Xiongxiong * 创建时间:2017-5-6 下午1:50:18 * 修改人:Mu Xiongxiong * 修改时间:2017-5-6 下午1:50:18 * 修改备注: * @version * */ public class BaseHibernateDao { /** * * @Title: getSession * @Description: 该方法的主要作用:打开session * @param @return 设定文件 * @return 返回类型:Session * @throws */ public Session getSession(){ return HibernateUtil.getSession(); } /** * * @Title: closeSession * @Description: 该方法的主要作用:关闭session * @param 设定文件 * @return 返回类型:void * @throws */ public void closeSession (){ HibernateUtil.closeSession(); } }
Dao层实现类:
/** * @Title: IVoteTreeDaoImpl.java * @Package org.dao.impl * @Description: TODO该方法的主要作用: * @author A18ccms A18ccms_gmail_com * @date 2017-5-6 下午10:40:25 * @version V1.0 */ package org.dao.impl; import java.util.ArrayList; import java.util.List; import javax.persistence.criteria.From; import org.dao.BaseHibernateDao; import org.dao.IVoteTreeDao; import org.entity.VoteTree; /** * * 项目名称:testTree * 类名称:IVoteTreeDaoImpl * 类描述: * 创建人:Mu Xiongxiong * 创建时间:2017-5-6 下午10:40:25 * 修改人:Mu Xiongxiong * 修改时间:2017-5-6 下午10:40:25 * 修改备注: * @version * */ public class IVoteTreeDaoImpl extends BaseHibernateDao implements IVoteTreeDao { // //查询最小的数 @Override public Long minId() { String hql = "select min(levels) from VoteTree"; Long minCount = (Long) getSession().createQuery(hql).uniqueResult(); System.out.println("最小的数是:"+minCount); return minCount; } //查询一级菜单 @Override public List<VoteTree> getFirstLevel(Long minLevel) { String hql="from VoteTree where levels=?"; List<VoteTree> listFirstLevel = getSession().createQuery(hql) .setParameter(0, minLevel) .list(); return listFirstLevel; } //根据一级id查询所有的子集 @Override public List<VoteTree> getNextSubSet(VoteTree tvote) { String hql = "from VoteTree where pid = ?"; List<VoteTree> tNextLevel = getSession().createQuery(hql).setParameter(0, tvote.getId()).list(); //遍历这个二级目录的集合 for (VoteTree voteTree : tNextLevel) { List<VoteTree> ts = getDeeptLevel(voteTree); //将下面的子集都依次递归进来 voteTree.setChildren(ts); } return tNextLevel; } //递归查询 @Override public List<VoteTree> getDeeptLevel(VoteTree tvote) { String hql="from VoteTree where pid = ?"; List<VoteTree> tsLevel = getSession().createQuery(hql).setParameter(0, tvote.getId()).list(); if(tsLevel.size()>0){ for (int i = 0; i <tsLevel.size(); i++) { getDeeptLevel(tsLevel.get(i)); } } return tsLevel; } }