问题描述
工作中,关联表查询必不可少,这里记录笔记方便复制,怎么实现多条记录一对多查询,数据模型如下
问题分析
查询结果为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>