1、表的结构
CREATE TABLE `my_tree` ( `id` varchar(32) NOT NULL, `gjfl_name` varchar(100) DEFAULT NULL, `parent_id` varchar(32) DEFAULT NULL, `gjfl_level` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
2、表数据
INSERT INTO `my_tree` VALUES ('1', '1', '0', '1');
INSERT INTO `my_tree` VALUES ('2', '2', '1', '2');
INSERT INTO `my_tree` VALUES ('3', '3', '0', '1');
INSERT INTO `my_tree` VALUES ('4', '4', '3', '2');
INSERT INTO `my_tree` VALUES ('5', '5', '4', '3');
INSERT INTO `my_tree` VALUES ('6', '6', '2', '3');
INSERT INTO `my_tree` VALUES ('7', '7', '3', '2');
3、实体类
package com.ym.contract.entity.po;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("my_tree")
public class MyTree extends Model implements Serializable {
private static final long serialVersionUID = -96886463332616307L;
@TableId(value = "id",type = IdType.ASSIGN_ID)
private String id;
private String gjflName;
private String parentId;
private Integer gjflLevel;
private List childrenList;
}
4、mapper.xml
分析
5、关系
首先我们的需求是,查询某一层下的所有子级数据,某一层下的子数据可能有很多条,于是定义了 private ListchildrenList; 再分析关系,一个父级对应多个子级 一对多关系 ,于是我们使用collection标签
6、查询步骤(重点分析collection标签)
直白的说:当调用findLevel查询时,返回一个结果集到collection中,collection会遍历这个结果集中的id循环去查询,查询出来的数据赋值到childrenList属性上,直至为空结束查询返回数据



