文章目录[隐藏]
相信你也遇到过这种场景,判断二级目录属于哪个一级目录,一个员工属于哪个上级员工领导…
当Mybatis
遇上目录树,有哪些解决方法?
一般来说,有
xml
直接实现和java
代码递归赋值实现。
方式一:xml直接实现
这里列出category
数据表数据
表结构如下
这里贴出需要返回给前端的聚合模型view object
数据
/** * 二级分类VO */ public class CategoryVO { private Integer id; private String name; private String type; private Integer fatherId; // 三级分类vo list private List<SubCategoryVO> subCatList; //=====篇幅原因,省掉Getter和Setter方法====== ...... }
public class SubCategoryVO { private Integer subId; private String subName; private String subType; private Integer subFatherId; //=====篇幅原因,省掉Getter和Setter方法====== ...... }
这就涉及到自连接查询子目录的技巧了,我们试试查找father_id
是1
的子分类数据,也就是查询甜点/蛋糕分类下面的二级和三级分类,执行如下语句
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, c.type AS subType, c.father_id AS subFatherId FROM category f LEFT JOIN category c ON f.id = c.father_id WHERE f.father_id = 1
结果如下
可以看到二级分类为蛋糕、点心时,有哪些对应的三级分类可以提供给前端,便于展示。
我这里分为CategoryVO
、SubCategoryVO
,而不是把所有属性放在一个VO
,是为了便于理解。如果不用
本文来源gaodai^.ma#com搞#代!码网
List集合,而把所有属性放在一个VO
,前端收到的数据形式和你此时在数据库查询出来的一样,有多条蛋糕记录,底下对应着不同具体食品,这让前端不好处理也不符合逻辑,正常逻辑应该是只有一个蛋糕分类,然后这个分类里面有数组去装着蛋糕对应子分类才对。