MyBatIs一对多问题

介绍

首先就是由于是层级结构,想要展示出一对多多多的效果,不考虑多此查询,使用一次查询

SQL

 SELECT a.id,a.`name`,b.id as bid,b.`name` as bname,c.id as cid,c.`name` as cname,d.id as did,d.`name` as dname,d.flag as dflag
 FROM admin a
 LEFT JOIN admin b
 ON b.superior = a.id
 LEFT JOIN admin c
 ON c.superior = b.id
 LEFT JOIN admin d
 ON d.superior = c.id
 WHERE a.`level` = 1;

查询效果

在这里插入图片描述

Mapper结构

Dao

    List<HashMap<String,Object>> getAllOfficeConstruction();

mapper

  <select id="getAllOfficeConstruction" resultMap="AllConstructionResultMap">
 SELECT a.id,a.`name`,b.id as bid,b.`name` as bname,c.id as cid,c.`name` as cname,d.id as did,d.`name` as dname,d.flag as dflag
 FROM admin a
 LEFT JOIN admin b
 ON b.superior = a.id
 LEFT JOIN admin c
 ON c.superior = b.id
 LEFT JOIN admin d
 ON d.superior = c.id
 WHERE a.`level` = 1;
  </select>

resultMap

  <resultMap id="AllConstructionResultMap" type="java.util.HashMap">
    <id column="id" jdbcType="INTEGER" property="id" />
    <result column="name" jdbcType="VARCHAR" property="name" />
    <collection property="child" ofType="java.util.HashMap" javaType="list">
      <id column="bid" jdbcType="INTEGER" property="id" />
      <result column="bname" jdbcType="VARCHAR" property="name" />
      <collection property="child" ofType="java.util.HashMap" javaType="list">
        <id column="cid" jdbcType="INTEGER" property="id" />
        <result column="cname" jdbcType="VARCHAR" property="name" />
        <collection property="child" ofType="java.util.HashMap" javaType="list">
          <id column="did" jdbcType="INTEGER" property="id" />
          <result column="dname" jdbcType="VARCHAR" property="name" />
          <result column="dflag" jdbcType="INTEGER" property="flag" />
        </collection>
      </collection>
    </collection>
  </resultMap>

最终效果

{
    "code": 200,
    "msg": "查询成功",
    "data": {
        "list": [
            {
                "name": "全域办",
                "id": 15,
                "child": [
                    {
                        "name": "乡",
                        "id": 33,
                        "child": [
                            {
                                "name": "村",
                                "id": 161,
                                "child": [
                                    {
                                        "flag": 2,
                                        "name": "陶",
                                        "id": 62
                                    }
                                ]
                            }
                        ]
                    }
                ]
            }
        ]
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

临水而愚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值