实体类如下:
@Data
public class TbUser {
private String id;
private String username;
private String password;
private String email;
private String gender;
private String flag;
private String role;
private String code;
private List<Order> orders;
}
@Data
public class Order {
private String id;
private String uid;
private String money;
private String status;
private String time;
private String aid;
private String cids;
}
mapper接口hemapper.xml
public interface UserMapper {
List<User> queryUser();
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.iwe.testpojo.onetomany.mapper.TbUserMapper">
<resultMap id="queryOrdersResultMap" type="tbUser">
<!-- 主查表信息-->
<id property="id" column="id" />
<result property="username" column="username" />
<result property="password" column="password" />
<result property="email" column="email" />
<result property="gender" column="gender" />
<result property="flag" column="flag" />
<result property="role" column="role" />
<result property="code" column="code" />
<!-- 描述次查表信息-->
<!-- property:映射实体类(主查表)的字段或属性
ofType相当于1:1中的javaType 映射类名-->
<collection property="orders" ofType="order">
<id property="id" column="oid"/>
<result property="time" column="time"/>
<result property="aid" column="aid"/>
</collection>
</resultMap>
<select id="queryOrder" resultMap="queryOrdersResultMap">
SELECT u.*,o.id oid,o.time,o.aid from tb_user u left join tb_order o on u.id=o.uid
</select>
</mapper>
测试类及测试结果
@Test
void test03() {
List<TbUser> tbUsers = tbUserMapper.queryOrder();
for (TbUser tbUser:tbUsers
) {
System.out.println(tbUser);
}
}
个人小结:其实与1:1没有什么不同,不过是把单个对象属性换成了多个相同对象的集合的属性,把association的标签换成了collection,其他都是一样的。