登录
首页 >  数据库 >  MySQL

父子级关系处理

来源:SegmentFault

时间:2023-02-16 15:38:48 211浏览 收藏

对于一个数据库开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《父子级关系处理》,主要介绍了MySQL、Java、mybatis,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!

一:代码处理
1.多表父子级关系利用流来处理

1
2
3
4
5
6
7
8
9
private List<addressinfo>  children;
List<addressinfo> collect1 = addressInfo.stream().map(m1 -> {
List<addressinfo> collect = addressInfo.stream().filter(
        m2 -> Objects.equals(m1.getId(), m2.getPId())).collect(Collectors.toList());
m1.setChildren(collect);
return m1;
 }).collect(Collectors.toList());
说明:m1 父级信息   m2 子级信息    
</addressinfo></addressinfo></addressinfo>

2单表父子级关系处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
List<map object="">> list = new ArrayList<map object="">>();
    /**
     * 3.循环处理全部数据,转为父子级对象
     */
    for (AddressInfo vo : addressInfo) {
        Map<string object=""> map = new HashMap<string object="">(8);
        if (vo.getPId() == 0) {
            map.put("children", getChildren(addressInfo, vo.getId()));
            map.put("pId", vo.getPId());
            存放子级数据
            list.add(map);
        }
    }
    PageInfo<addressinfo> pageInfo = new PageInfo(addressInfo);
    return success(list, pageInfo.getTotal());
}
 
public List<map object="">> getChildren(List<addressinfo> data, Integer wzflid) {
    /**
     * 1.对数据校验处理
     */
    List<map object="">> list = new ArrayList<map object="">>();
    if (data == null || data.size() == 0 || wzflid == null) {
        return list;
    }
    /**
     * 2.遍历匹配父子级关系数据
     */
    for (AddressInfo vo : data) {
        Map<string object=""> map = new HashMap<string object="">(8);
        if (wzflid.equals(vo.getPId())) {
            map.put("pId", vo.getPId());
             
            list.add(map);
        }
    }
    return list;
}
</string></string></map></map></addressinfo></map></addressinfo></string></string></map></map>

二:mysql 查询语句处理

1
2
3
4
5
6
7
8
1、创建接收类型(实体类有 接受子结果的数据类型)
    <resultmap type="实体类" id="fatherMap"><id column="id" property="id"></id><collection property="children" oftype="com.wengegroup.entity.UPerm" column="id" select="findMenuByPid"></collection></resultmap><!--级联查询父菜单--><select id="selectUPerm" resultmap="fatherMap">
    select *
    from u_perm
    where id = #{id}
</select><!--级联查询子菜单--><select id="findMenuByPid" resultmap="fatherMap">
    select * from u_perm where parent_id = #{id}
</select>

到这里,我们也就讲完了《父子级关系处理》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于mysql的知识点!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表