您的位置:首页 > 编程语言 > Java开发

java代码实现递归@oneToMany

2011-09-27 16:52 453 查看
/**
* 类:  <code> MenuService </code>
* 功能描述: 新增根据菜单编码递归删除菜单及所有子菜单方法
* 创建人: 马素文
* 创建日期: 2010-9-07 下午02:10:39
* 开发环境: JDK6.0
*/
public class MenuService
{

/**
* @Fields leafList : 根菜单集合
*/
List<MenuInfo> leafList = null;

/**
*
* 功能描述: 根据菜单编码删除菜单对象
* @param menuCode 菜单编码
* @return  boolean,删除成功,返回true,删除失败,返回false
*
*/
public boolean delMenuInfoByMenucode( String menuCode )
{
//删除成功与否标志
boolean flag = false;
try
{
if( menuCode != null )
{
//递归获得所有属于当前菜单编码的叶编码
leafList = getLeaf( menuCode );
if( leafList != null && !leafList.isEmpty() )
{	//倒序循环删除菜单记录
for ( int i = leafList.size()-1; i >= 0; i-- )
{
if( leafList.get(i) != null )
{
baseDao.delete( leafList.get(i) );
}
}
flag = true;
}
}
} catch (Exception e)
{
e.printStackTrace();
flag = false;
}
return flag;
}

/**
*
* 功能描述: 获得当前菜单编码所有叶子菜单编码
* @param menuCode 菜单编码
* @return List 菜单集合
*/
public List<MenuInfo> getLeaf( String menuCode )
{
leafList = new ArrayList<MenuInfo>();
leafList = addToMenuInfoList(menuCode,leafList);
if( leafList != null && !leafList.isEmpty() )
{
return leafList;
}
return null;
}

/**
* 功能描述:递归调用方法
* @param menuCode 菜单编码
* @param pList 菜单默认集合大小
* @return List 菜单集合
*/
public List<MenuInfo> addToMenuInfoList( String menuCode,List<MenuInfo> pList )
{
//根据菜单编码查找根菜单集合
List<MenuInfo> pMenuInfotList = baseDao.findByHql("FROM MenuInfo menu WHERE menu.parentCode = ? and menu.isAvailability = ? order by menu.displayOrder ", menuCode,false);
//根据菜单编码获取菜单对象
MenuInfo menuInfo = (MenuInfo) baseDao.findByHql( "FROM MenuInfo menu WHERE menu.menuCode = ?", menuCode ).get(0);
//根菜单集合为空
if( pMenuInfotList.size() <= 0 && menuInfo == null )
{
//菜单对象放入 菜单默认集合
pList.add( menuInfo );
}
else
{
//取得集合中第一条记录
pList.add( menuInfo );
for( int i = 0; i < pMenuInfotList.size(); i++ )
{
//根据集合中第一天记录遍历叶子菜单
addToMenuInfoList( pMenuInfotList.get(i).getMenuCode(),pList );
}
}
return pList;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐