我们在网站里面可以看到左侧有菜单,有父列表,每一个下面还有子列表
但是以上的菜单是自己写在jsp页面的,写在想要动态的显示,就是菜单的父子都在数据库,要动态的展现在前段
数据库里面的数据
insert into categorys values('1000','图书','好书。。。。',null);
insert into categorys values('1001','小说','好书。。。。','1000');
insert into categorys values('1002','计算机图书','好书。。。。','1000');
insert into categorys values('2000','电子产品','好电子产品。。。。',null);
insert into categorys values('2001','手机','电子产品。。。。','2000');
insert into categorys values('2002','电话','电子产品。。。。','2000');
insert into categorys values('3000','衣服','衣服。。。。',null);
insert into categorys values('3001','上衣','衣服。。。。','3000');
insert into categorys values('3002','女裤','衣服。。。。','3000');
select * from categorys;
select * from categorys where cid is null;
-- 查询所有的类别和子类别
select c1.cid ,c1.name ,c1.desc,c2.id as cid, c2.name cname ,c2.desc cdesc
from (select * from categorys where cid is null) c1 left join categorys c2 on c1.id=c2.cid;
项目里面要定义一个这个菜单的实体,
/** * 并不是实体,只是为了给展示类别的tree使用 * @author * @date 2020/9/7--10:23 */
public class CategoryDTO {
private String id;
private String name;
private String desc;
// 子类别
private List<CategoryDTO> categorys;
public CategoryDTO() {
}
public CategoryDTO(String id, String name, String desc, List<CategoryDTO> categorys) {
this.id = id;
this.name = name;
this.desc = desc;
this.categorys = categorys;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public List<CategoryDTO> getCategorys() {
return categorys;
}
public void setCategorys(List<CategoryDTO> categorys) {
this.categorys = categorys;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
CategoryDTO that = (CategoryDTO) o;
return Objects.equals(id, that.id) &&
Objects.equals(name, that.name) &&
Objects.equals(desc, that.desc) &&
Objects.equals(categorys, that.categorys);
}
@Override
public int hashCode() {
return Objects.hash(id, name, desc, categorys);
}
@Override
public String toString() {
return "CategoryDTO{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", desc='" + desc + '\'' +
", categorys=" + categorys +
'}';
}
}