【SSM学习】9、Mybatis Plus 复杂查询通过 xml 的方式实现一对多查询

问题描述

工作中,关联表查询必不可少,这里记录笔记方便复制,怎么实现多条记录一对多查询,数据模型如下

在这里插入图片描述

问题分析

查询结果为List<UserInfoVo>,其中UserInfoVo实体中,有private List<RoleInfoList> roleInfoList;属性,也就是说,每条用户记录都对应了一个角色list,我这里是举例几个属性

解决办法

直接分析xml,解决具体的实现问题

首先定义result,并设置唯一标识id,注意相关类型设置

    <resultMap id="listResult" type="com.xfr.pin.vo.UserInfoVo">
        <id property="id" column="id"/>
        <result property="name" column="name"></result>
        <result property="phone" column="phone"></result>
        <result property="openId" column="open_id"></result>
        <collection property="roleInfoList" javaType="list" ofType="com.xfr.pin.entity.RoleInfo" >
            <id property="id" column="role_id"/>
            <result property="name" column="role_name"></result>
        </collection>
    </resultMap>

编写select语句,注意查询结果格式

    <select id="list" resultMap="listResult">
		SELECT A.id, A.`name`, A.phone, A.open_id, C.id role_id, C.`name` role_name
		from user_info A
		left join map_user_role B on A.id = B.user_id
		left join role_info C on B.role_id = C.id
		where A.`status` = 1
    </select>

微信公众号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Tellsea

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

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

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

打赏作者

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

抵扣说明:

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

余额充值