Java 遞歸獲取樹形菜單

Service:
/**
*獲取角色對應的菜單
*/
public RoleVo getRoleVoById(String roleId){
RoleDo roleDo = getRoleById(roleId);
RoleVo roleVo = new RoleVo();
BeanUtils.copyProperties(roleDo,roleVo);
List menuids = baseMenuMapper.listMenuByRole(roleId);
List menuVos = getMenuTree("", menuids);
roleVo.setMenus(menuVos);
return roleVo;
}

/**
*遞歸
*/
public List getMenuTree(String parentId , List menuids) {
List result = new ArrayList();
Example example = new Example(BaseMenuDo.class);
Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo(“pid”, parentId);
List nextLevelMenus = baseMenuMapper.selectByExample(example);
for (BaseMenuDo item : nextLevelMenus) {
MenuVo menuVo = new MenuVo();
BeanUtils.copyProperties(item,menuVo);
if(menuids.contains(item.getId())){
menuVo.setChecked(true);
}
menuVo.setChildren(getMenuTree(item.getId(),menuids));
result.add(menuVo);
}
return result;
}

/**

  • Mapper
    */
    public interface BaseMenuMapper extends Mapper {
    void addrole_menu(@Param(“resourceId”) String resourceId, @Param(“roleId”) String roleId);

    List listMenuByRole(@Param(“roleId”) String roleId);

    void deleterole_resourceByResourceId(@Param(“resourceId”) String resourceId);

    void deleterole_resourceByRoleId(@Param(“roleId”) String roleId);
    }

/**

  • xml
    */

    select RESOURCE_ID FROM BASE_ROLE_RESOURCE WHERE ROLE_ID =#{roleId}

/**

  • 實體類
    */
    @Data
    public class RoleVo {

    private String id;

    private String roleName;

    private String description;

    private List menus;

}

@Data
@Table(name = “ACE_ROLE_INFO”)
public class RoleDo extends BaseEntity{
@Id
private String id;

private String roleName;

private String description;

}

@Data
public class MenuVo {
private String id;
private String name;
private String title;
private boolean checked = false;
private List children;
}

@Table(name=“BASE_MENU”)
@Data
public class BaseMenuDo extends BaseEntity{
@Id
private String id;
private String name;
private String title;
private String pid;
}

2.獲取菜單樹

/**

  • service
    /
    public List getMenuTree(String parentId ) {
    List result = new ArrayList();
    Example example = new Example(BaseMenuDo.class);
    Example.Criteria criteria = example.createCriteria();
    criteria.andEqualTo(“pid”, parentId);
    List nextLevelMenus = baseMenuMapper.selectByExample(example);
    for (BaseMenuDo item : nextLevelMenus) {
    MenuVo menuVo = new MenuVo();
    BeanUtils.copyProperties(item,menuVo);
    menuVo.setChildren(getMenuTree(item.getId()));
    result.add(menuVo);
    }
    return result;
    }
    /
    *
  • 實體類
    */
    @Data
    public class MenuVo {
    private String id;
    private String name;
    private String title;
    private boolean checked = false;
    private List children;
    }

@Table(name=“BASE_MENU”)
@Data
public class BaseMenuDo extends BaseEntity{
@Id
private String id;
private String name;
private String title;
private String pid;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章