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; } }
相关文章推荐
- SSH整合之java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
- java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
- Hibernate java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
- java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
- java.lang.NoSuchMethodError:javax.persistence.OneToMany.orphanRemoval()Z
- Java代码实现一维数组的二分查找(折半查找)(非递归方法)
- java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
- java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z异常
- java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
- 报此错错解决办法:java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
- SSH2项目报错 Caused by: java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
- OneToOne注解报异常:java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
- 关于如何实现在整合struts2和hibernate4框架下对many-to-one级联数据的存储
- WebLogic下开发Hibernate问题 java.lang.NoSuchMethodError:javax.persistence.OneToMany.orphanRemoval()Z
- java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z异常
- 算法:二叉树的先序遍历、中序遍历、后序遍历(递归及非递归方式)的java代码实现
- JPA实现一对多(OneToMany)关联
- java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
- 报此错解决办法:java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()ZZ
- Hibernate多对一关系代码示例(Many-To-One)