首页 > 解决方案 > Mybatis resultMap中如何使用Multiple collection

问题描述

我有三个表,如 A、B、C;这是我的 resultMap

<resultMap id="picUserResultMap" type="PicUserAlias">
<id property="id" column="ID"></id>
<result property="bindId" column="BINDID"></result>
<result property="createDate" column="CREATEDATE"></result>
<result property="pictureId" column="PICTUREID"></result>
<result property="picture" column="PICTURE"></result>
<result property="picDescribe" column="PICDESCRIBE"></result>
<result property="pictureNo" column="PICTURENO"></result>
<result property="userId" column="USERID"></result>
<collection property="picTypeUserList" ofType="picTypeUserAlias">
  <result property="userId" column="userid"></result>
  <result property="picTypeId" column="pictypeid"></result>
  <result property="content" column="content"></result>
  <result property="isTags" column="istags"></result>
</collection>
<collection property="picDiscussList" ofType="PicDiscussAlias">
  <result property="id" column="id"></result>
  <result property="discussUser" column="discussuser"></result>
  <result property="userId" column="userid"></result>
  <result property="picUserId" column="picuserid"></result>
  <result property="content" column="content"></result>
</collection>

这是我的 SQL 查询

<select id="getPicUserAndTypeById" resultMap="picUserResultMap">
SELECT
u.*, t.*,d.*
FROM
KO_PIC_USER u
LEFT JOIN (select tu.*,pt.istags from KO_PIC_TYPE_USER tu LEFT JOIN ko_pic_type pt on
tu.PICTYPEID=pt.ID WHERE pt.isshow=1) t ON t.PICUSERID = u.id
LEFT JOIN ko_pic_discuss d ON u.ID=d.PICUSERID
WHERE
u.BINDID = #{bindId} ORDER BY u.PICTURENO,t.istags

当我查询出来时,数据不准确,picDiscussList 像 picTypeUserList 我不知道为什么任何帮助将不胜感激。

标签: mybatisspring-mybatis

解决方案


阅读有关 Advanced Result Maps 的文档。两个集合都需要一个 id,例如:替换<result property="picTypeId" column="pictypeid"></result><id property="picTypeId" column="pictypeid"/>

类型picTypeUserAlias并且PicDiscussAlias不应该需要 userid 和 id 属性。


推荐阅读