【Mybatis Plus】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>

微信公众号

每天Get一个小技巧

猜你喜欢

转载自blog.csdn.net/qq_38762237/article/details/109616810