记MyBaits-Plus实现菜单的无限层关系

博客 动态
0 120
羽尘
羽尘 2022-03-31 17:57:22
悬赏:0 积分 收藏

记MyBaits-Plus 实现菜单的无限层关系

Mybatis-Plus父子菜单

首先来看一下实现的效果
image

pojo层

@Data@TableName("platform_role")public class Role implements Serializable {    private static final long serialVersionUID = 1L;      @TableId(value = "id", type = IdType.AUTO)    private Long id;    private String roleName;    private String roleKey;    private Long createdBy;      @TableField(fill = FieldFill.INSERT)    private LocalDateTime createdDate;    private Long lastModifiedBy;    private LocalDateTime lastModified;    private String owner;}
@Mapper@Repositorypublic interface MenuMapper extends BaseMapper<Menu> {}
public interface IMenuRoleService extends IService<MenuRole> {}
package com.zcx.service.impl;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;import com.zcx.pojo.Menu;import com.zcx.mapper.MenuMapper;import com.zcx.service.IMenuService;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.ArrayList;import java.util.List;/** * <p> *  菜单实现层 * </p> * * @author zcx * @since 2022-03-31 */@Servicepublic class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IMenuService {    @Autowired    MenuMapper menuMapper;    /**     * @author zhaochangxin     * @Description:查询所有菜单     * @return: java.util.List<com.zcx.pojo.Menu>     * @date 2022/3/31 17:13     * @throws     */    @Override    public List<Menu> queryAllMenu() {        QueryWrapper<Menu> menuQueryWrapper = new QueryWrapper<>();        List<Menu> EndMenu = new ArrayList<>();        // 查询到父菜单        menuQueryWrapper.eq("parent_id","0");        List<Menu> RootMenu = menuMapper.selectList(menuQueryWrapper);        // 查询所有除父菜单之外的菜单        menuQueryWrapper.clear();        menuQueryWrapper.ne("parent_id","0");        List<Menu> menusListNeRoot = menuMapper.selectList(menuQueryWrapper);        // 去遍历父菜单 将父菜单和所有菜单比较 如果有菜单的parent_id==他的id 就将他添加为children        for (Menu menu : RootMenu) {            //查询子菜单 递归方法            EndMenu.add(getChildrenList(menu, menusListNeRoot));        }        return EndMenu;    }    /**     * @author zhaochangxin     * @Description:将父菜单和所有菜单比较 如果有菜单的parent_id==他的id 就将他添加为children     * @Param childMenu: 父菜单     * @Param menuChildrenList: 所有除了父菜单的菜单     * @return: com.zcx.pojo.Menu     * @date 2022/3/31 17:11     */    public Menu getChildrenList(Menu RootMenu, List<Menu> menuChildrenList) {        for (Menu menu : menuChildrenList) {            if (RootMenu.getId().equals(menu.getParentId())){                RootMenu.getChildren().add(getChildrenList(menu, menuChildrenList));            }        }        return RootMenu;    }}
package com.zcx.controller;import com.zcx.common.vo.ApiResult;import com.zcx.pojo.Menu;import com.zcx.service.IMenuService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.ResponseBody;import java.util.List;/** * <p> *  前端控制器 * </p> * * @author zcx * @since 2022-03-31 */@Controller@RequestMapping("/menu")public class MenuController {    @Autowired    IMenuService menuService;    @ResponseBody    @RequestMapping("/list")    public ApiResult queryAllMenu(){        List<Menu> menus = menuService.queryAllMenu();        return ApiResult.success("查询所有菜单",menus);    }}

有问题或更好的办法请留言告知,谢谢您的观看。

posted @ 2022-03-31 17:30 XLK。 阅读(0) 评论(0) 编辑 收藏 举报
回帖
    羽尘

    羽尘 (王者 段位)

    2335 积分 (2)粉丝 (11)源码

     

    温馨提示

    亦奇源码

    最新会员