左侧垂直菜单树可扩展插件

由于每一次写系统都要自己创建不同的菜单,即构建菜单树,非常繁琐,于是为了一劳永逸,写了一个生成菜单树模板的小插件,通过往数据库表里增加数据就可以动态创建菜单树,并在前端展示

一:引入依赖

依赖引入:(需自己把jar包加入到自己的Maven本地仓库中,该依赖暂未上传到中央仓库)

        <dependency>
                  <groupId>org.menubuilder</groupId>
                  <artifactId>menubuilder</artifactId>
                  <version>0.0.1-SNAPSHOT</version>
      </dependency>

二:数据库表与实体类 

/**
 * 菜单项实体
 * @author 
 *
 */
public class MenuItem {
	//菜单id
	private int menuId;
	//菜单名
	private String menuName;
	//创建人
	private String createBy;
	//更新人
	private String updateBy;
	//更新时间
	private Date updateTime;
	//创建时间
	private Date createTime;
	//权限等级
	private int privilege;
	//是否展示
	private int isShow;
	//菜单类型(一级带单,二级菜单....)
	private int menuType;
	//目标地址
	private String url;
	//父菜单id
	private int parentId;
	//主题
	private String theme;
	//菜单标识(唯一)
	private String remark;

   

三:使用 

        (1)直接使用

                通过创建MenuBuilder实例,调用buildMenuTree(List<MenuItem>originalMenuList)即可创建出一棵具有层级结构的菜单树

            //示例:
            MenuBuilder builder = new MenuBuilder();
            List<MenuItem> menu = builder.buildMenuTree(originalMenuList)    

        (2)扩展使用

                        通过自定义类继承MenuBuilder,直接使用默认的逻辑构建菜单树,并且重写MenuBuilder的增加,修改,删除菜单项等方法,也可以通过实现IMenuBuilder接口调用并实现接口方法(推荐使用自定义接口继承IMenuBuilder接口)
MenuBuilder只提供菜单树的构建,不提供菜单项的增加,修改,删除的逻辑,可由使用者自定义实现

    //示例:(本示例是基于Spring框架)	
	/*
 	* 自定义业务层 菜单Service接口,自定义接口继承IMenuBuilder接口
 	*/
	public interface MenuService extends IMenuBuilder{	
	}
	/*
	*
 	* 业务层 菜单实现类
 	*/
	@Service
	public class MenuServiceImpl extends MenuBuilder implements MenuService{
	@Autowired
	private MenuMapper menuMapper;

     //使用原本逻辑实现接口方法buildMenuTree()
	@Override
	public List<MenuItem> buildMenuTree() {
		// TODO Auto-generated method stub
		List<MenuItem> originalMenuList = menuMapper.selectAllMenuItem();
		List<MenuItem> topMenu = buildMenuTree(originalMenuList);
		return topMenu;
	}

	/**
 	* 前端交互 Controller
 	* @author Administrator
 	*
 	*/

	@Controller
	public class MenuController {

	@Autowired
	private MenuService menuService;

	@RequestMapping("/buildTree")
	public String BuildTree(HttpSession session) {
		List<MenuItem> menu = menuService.buildMenuTree();
		session.setAttribute("menu", menu);
		return "Menu";
	}
		

             

四:自定义                

        (1)通过接口继承IMenuBuilder接口或自定义类实现IMenuBuilder接口,实现接口方法即可
        接口方法包括:buildMenuTree()生成菜单树,addMenuItem(MenuItem menuItem)添加菜单等
    
        (2)通过继承IMenuBuilder的实现类MenuBilder,重写该父类方法即可
        父类方法包括:builderMenuTree()以及buildMenuTree(List<MenuItem> orginalMenuList)生成菜单树,addMenuItem(MenuItem menuItem)添加菜单项等

       

五:API

        

    /**
	 * 自定义菜单树生成方法
	 * 
	 * @return
	 */
	public List<MenuItem> buildMenuTree();

	/**
	 * MenuBuilder默认实现的生成菜单树的方法
	 * @param orginalMenuList 从数据库中获取的所有合法的菜单项,该集合的数据需要从按照菜单项类型                     
     * 升序排序   
	 * @return 顶级菜单项
	 */
	public default List<MenuItem> buildMenuTree(List<MenuItem> orginalMenuList) {
		return null;
	}

	/**
	 * 增加菜单项
	 * @param menuItem 增加的菜单项
	 * @return 操作结果
	 */

	public default boolean addMenuItem(MenuItem menuItem) {
		return false;
	}

	/**
	 * 通过菜单id修改菜单项
	 * @param MenuId 菜单id
	 * @return 操作结果
	 */

	public default boolean updateMenuItem(MenuItem menuItem) {
		return false;
	}


	/**
	 * 通过菜单id删除菜单项
	 * @param MenuId 菜单id
	 * @return 操作结果
	 */
	public default boolean deleteMenuItem(int MenuId) {
		return false;
	}
	

六:工具类架构

 

 

七:效果图(基于Bootstrap框架)

 

 七:资源地址

数据库关系表脚本

菜单树插件工具类

基于BootStrap框架的菜单jsp页面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值