Mybatis-----查询结果合并成集合
如上查询结果,通过主表左连接出来多条记录。
目前的查询结果共有12条记录,但是根据 id来看,实际上只有2条主表记录,其它的都是
通过主表左连接出来的。
如何让查询结果只有2条?
MyBatis提供了合并的语法
@Data
public class Subsystem {
private int subsystemId;
private String subsystemKey;
private String subsystemName;
private Integer sn;
private boolean selected;
//持有Page对象集合
private List<Page> pages;
}
@Data
public class Page {
private int pageId;
private String pageKey;
private String pageName;
private boolean selected;
private Integer parentPageId;
private Integer sn;
private List<Page> subPages;
}
<select id="list" resultMap="listWithPage">
SELECT
ts.id,
ts.subsystem_key,
ts.subsystem_name,
tp.id as page_id,
tp.page_key,
tp.page_name,
ts.SN,
tp.SN as page_sn,
tp.parent_page_id
FROM t_subsystem ts
LEFT JOIN t_page tp ON ts.id = tp.subsystem_id
ORDER BY ts.SN , tp.SN
</select>
<resultMap id="listWithPage"
<!-- 这里返回最终的对象类型-->
type="${package}.Subsystem">
<id property="subsystemId" column="id"/>
<result property="subsystemName" column="subsystem_name"/>
<result property="subsystemKey" column="subsystem_key"/>
<result property="sn" column="sn"/>
<collection property="pages"
<!-- 这里填写持有的集合对象类型-->
ofType="${package}.Page">
<id property="pageId" column="page_id"/>
<result property="pageKey" column="page_key"/>
<result property="pageName" column="page_name"/>
<result property="sn" column="page_sn"/>
<result property="parentPageId" column="parent_page_id"/>
</collection>
</resultMap>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix