建立数据库表
CREATE TABLE t_menu (
id INT (11) NOT NULL auto_increment,
pid INT (11),
`name` VARCHAR (200),
url VARCHAR (200),
icon VARCHAR (200),
PRIMARY KEY (id)
);
insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('1',NULL,'系统权限菜单','glyphicon glyphicon-th-list',NULL);
insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('2','1','控制面板','glyphicon glyphicon-dashboard','main.htm');
insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('3','1','权限管理','glyphicon glyphicon glyphicon-tasks',NULL);
insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('4','3','用户维护','glyphicon glyphicon-user','user/index.htm');
insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('5','3','角色维护','glyphicon glyphicon-king','role/index.htm');
insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('6','3','许可维护','glyphicon glyphicon-lock','permission/index.htm');
insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('7','1','业务审核','glyphicon glyphicon-ok',NULL);
insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('8','7','实名认证审核','glyphicon glyphicon-check','auth_cert/index.htm');
insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('9','7','广告审核','glyphicon glyphicon-check','auth_adv/index.htm');
insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('10','7','项目审核','glyphicon glyphicon-check','auth_project/index.htm');
insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('11','1','业务管理','glyphicon glyphicon-th-large',NULL);
insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('12','11','资质维护','glyphicon glyphicon-picture','cert/index.htm');
insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('13','11','分类管理','glyphicon glyphicon-equalizer','certtype/index.htm');
insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('14','11','流程管理','glyphicon glyphicon-random','process/index.htm');
insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('15','11','广告管理','glyphicon glyphicon-hdd','advert/index.htm');
insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('16','11','消息模板','glyphicon glyphicon-comment','message/index.htm');
insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('17','11','项目分类','glyphicon glyphicon-list','projectType/index.htm');
insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('18','11','项目标签','glyphicon glyphicon-tags','tag/index.htm');
insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('19','1','参数管理','glyphicon glyphicon-list-alt','param/index.htm');
形成树形结构的关键依据
在数据库表中通过pid字段,让当前记录指向它的父节点的记录,从而形成树形结构。
一条记录关联了同一个表中的其他记录,称之为自关联。
逆向工程
1、/atcrowdfunding-reverse/src/main/resources/generatorConfig.xml:
<table tableName="t_menu" domainObjectName="Menu" />
选择pom.xml----》 Run as —》 Maven build … —》将Goal的值设置为:mybatis-generator:generate----》Run
2、调整Menu.java:生成无参构造器、有参构造器和toString方法,以及加入子节点属性,如下:
// 对应数据库表主键
private Integer id;
// 对应父节点id(如果pid为null,则说明当前节点是根节点)
private Integer pid;
// 节点名称
private String name;
// 节点对应的URL地址
private String url;
// 节点的图标
private String icon;
// 当前节点的子节点集合,设置默认值是为了避免组装节点时空指针异常
private List<Menu> children = new ArrayList<>();
// 控制节点展开还是折叠,设置为true是让整个树形菜单默认展开
private Boolean open = true;
.....
3、逆向工程生成的资源各归各位
将atcrowdfunding-reverse/src/main/java目录下的com.atguigu.crowd.funding.entity包调整到atcrowdfunding-admin-4-entity模块的/src/main/java下
atcrowdfunding-reverse/src/main/java目录下的com.atguigu.crowd.funding.mapper包放到component模块的/src/main/java下
在atcrowdfunding-admin-1-webui/src/main/resources/mybatis/mapper目录,然后将com.atguigu.crowd.funding.mapper包的AdminMapper.xml放在atcrowdfunding-admin-1-webui模块的/src/main/resources下