分类实现
由于查询的结果并不是只在一个表中,那么pojo就不能满足需求,我们需要在VO层中定义相关的属性,VO层的存在就是方便前端获取数据,后端将前端的需要的数据做一个整合,打包成一个类。
首先我们自己定义CategoryVO,
public class CategoryVO {
private Integer id;
private String name;
private Integer type;
private String fatherId;
private List<SubCategoryVO> subCatList;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
public String getFatherId() {
return fatherId;
}
public void setFatherId(String fatherId) {
this.fatherId = fatherId;
}
public List<SubCategoryVO> getSubCatList() {
return subCatList;
}
public void setSubCatList(List<SubCategoryVO> subCatList) {
this.subCatList = subCatList;
}
}
接这定义子分类的VO,
public class SubCategoryVO {
private Integer subId;
private String subName;
private Integer subType;
private String subFatherId;
public Integer getSubId() {
return subId;
}
public void setSubId(Integer subId) {
this.subId = subId;
}
public String getSubName() {
return subName;
}
public void setSubName(String subName) {
this.subName = subName;
}
public Integer getSubType() {
return subType;
}
public void setSubType(Integer subType) {
this.subType = subType;
}
public String getSubFatherId() {
return subFatherId;
}
public void setSubFatherId(String subFatherId) {
this.subFatherId = subFatherId;
}
}
一般我们写mapper.xml文件时,我们写的sql语句现在navicat跑起来,确认sql语句没有问题。
SELECT
f.id AS id,
f.`name`AS `name`,
f.type AS type ,
f.father_id AS fatherId,
c.id AS subId,
c.`name`AS subName,
f.type AS subType,
f.father_id AS subFatherId
FROM
category f
LEFT JOIN
category c
ON
f.id = c.father_id
where
f.father_id = #{rootCatId}