MyBatis 自定义树状结构查询

表:

node表
idname
record表
idnamenode_id

查询目标结构:

[
    {
        "name": "节点1",
        "node_id": 1,
        "records": [
            {
                "id": 2,
                "node_id": 1,
                "name": "200614T110523N5200P1"
            },
            {
                "id": 6,
                "node_id": 1,
                "name": "200614T110523N5200P1"
            }
        ]
    },
    {
        "name": "节点2",
        "node_id": 2,
        "records": [
            {
                "id": 3,
                "node_id": 2,
                "name": "200614T110523N5200P2"
            },
            {
                "id": 7,
                "node_id": 2,
                "name": "200614T110523N5200P2"
            }
        ]
    }
]

方法声明:

LinkedList<LinkedHashMap<String, Object>> getNodeListWithRecords(@Param("ids") String ids);

MapperXml实现:

<!-- 自定义查询结果类型 -->
<resultMap id="nodes" type="java.util.LinkedHashMap">
	<!-- 此处node_id为node_tbl.id的别名 -->
	<result column="id" jdbcType="INTEGER" property="node_id" />
	<!-- 子查询结果集,{nid = id}中 nid为子查询的传参名,id为 上方column id项-->
	<collection column="{nid = id}" ofType="java.util.LinkedList" property="records" select="getRecordList">
	</collection>
</resultMap>
  
<!-- 主查询 -->  
<select id="getNodeListWithRecords" resultMap="nodes">
	SELECT * FROM node_tbl WHERE id in (${ids})
</select>

<!-- 子查询 -->  
<select id="getRecordList" resultType="java.util.LinkedHashMap">
	SELECT * FROM record_tbl WHERE node_id = ${nid}
</select>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值