情景:user表和account表,一个用户对应多个account,account表存在外键关联user表主键id
要求在查询user列表时查询出对应的account列表,形如
userList : [
{
id:1,
name:"xiaoming",
accountList : [{
id:1,
account:"",
password:""
}]
}
]
主要是xml配置
<select id="findUserList" resultMap="users">
select a.id, a.headimg, a.nickname, a.create_time createTime,
a.id as accountId from user
</select>
<resultMap id="users" type="map">
<collection property="loginWays" column="accountId" javaType="ArrayList" select="loginList"/>
</resultMap>
<select id="loginList" resultType="map">
select a.type, a.third_nickname thirdNickname from third_account a where a.account_id = #{accountId}
</select>
主查询findUserList
a.id as accountId对应resultMap中的column属性值,也就是将查询列表中的userId作为参数带入到loginList查询中作为参数,查询结果都使用map封装。loginWays作为map的key,与其它单字段结果值并列。 javaType="ArrayList"表明查询结果是list
参考官方封装POJO http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html#Result_Maps