private Integer id;
private String name;
private Integer age;
private String address;
//一对多映射集合
private List<Account> accounts;
}
实体类2:Account.java
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Account {
private Integer id;
private Integer uid;
private Double money;
}
UserMapper 接口:
public interface UserMapper {
List<User> findAllUser();
}
mapper.xml文件:下面写法是错误的,这样查出来的`id`只有一个
<resultMap id="userAccountMap" type="user">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="age" property="age"/>
<result column="address" property="address"/>
<collection property="accounts" javaType="ArrayList" ofType="Account">
<id column="id" property="id"/>
<result column="uid" property="uid"/>
<result column="money" property="money"/>
</collection>
</resultMap>
<select id="findAllUser" resultMap="userAccountMap">
select u.id, u.name, u.age, u.address,
a.id, a.uid, a.money
from user u
left join account a
on u.id = a.uid;
</select>
[](https://codechina.csdn.net/m0_60958482/java-p7)解决方案
=======================================================================
要解决这个问题很简单,拿上面的例子来说,我们要给结果集`userAccountMap`的字段起个别名,然后在下面的`select`语句中查询时再给字段起个相同的别名:
<resultMap id="userAccountMap" type="user">
<id column="id1" property="id"/> <!--此处给父表的id起了别名id1-->
<result column="name" property="name"/>
<result column="age" property="age"/>
<result column="address" property="address"/>
<collection property="accounts" javaType="ArrayList" ofType="Account">
<id column="id" property="id"/> <!--此处给子表的id起了别名id2-->
最后
针对以上面试题,小编已经把面试题+答案整理好了,想要获取这份面试题+答案的朋友帮忙点赞后,戳这里免费领取就可以了
面试专题
除了以上面试题+答案,小编同时还整理了微服务相关的实战文档也可以分享给大家学习
-mYMM7Br1-1630144608838)]
除了以上面试题+答案,小编同时还整理了微服务相关的实战文档也可以分享给大家学习
[外链图片转存中…(img-nma7bMxC-1630144608840)]
[外链图片转存中…(img-Uinq8BgK-1630144608841)]