1.一对一的关联查询
1.1. 准备查询的sql语句(“用户与订单”关联查询)
select o.id o.name o.address u.name u.address from orders o left join user u on o.user_id=u.id
2.1.建立pojo实体类
order实体类属性加上 “对一”关系,private User user;
2.2.配置映射关系
<resultMap type="orders" id = "ordersUsersResultMap">
<id column ="id" propertity="id" />
<id column ="name" propertity="name" />
<id column ="address" propertity="address" />
<!-- association:配置一对一个关联关系,说明:(也就是说要多配置一个返回值类型)
property:要映射的属性名称
javaType:要映射的属性类型(必须要指定) -->
<association property="user" javaType="User">
<!--配置用户的主键对应关系 -->
<id column="user_id" property="id"/>
<!-- 配置用户的普通字段对应关系 -->
<result column="username" property="username"/>
<result column="address" property="address"/>
</association>
</resultMap>
2.3 用select标签查询
<select id="queryAllOrdersAndUsers" resultMap="ordersUsersResultMap">
select o.id o.name o.address u.name u.address from orders o left join `user` u on o.user_id=u.id(加`是因为user是sql的关键字)
</select>
2.一对多的关联查询(一个用户的多个订单查询)
实现步骤差不多,不同之处在于
2.1 实体类的一对多关系体现。
private List<Orders> orderList;
2.2 映射关系Mapper.xml中的resultMap
<resultMap type="user" id="usersAndOrdersResultMap">
<!-- 配置用户的主键对应关系 -->
<id column="id" property="id"/>
<!-- 配置用户的普通字段对应关系 -->
<result column="username" property="username"/>
<result column="address" property="address"/>
<!-- collection:配置一对多关联关系,说明:
property:要映射的属性名称
javaType:要映射的类型(可以指定,可以不指定,建议指定)
ofType:集合中存放的类型(必须要指定) -->
<collection property="ordersList" javaType="List" ofType="orders">
<!-- 配置订单主键对应关系 -->
<id column="oid" property="id"/>
<!-- 配置订单的普通字段对应关系 -->
<result column="name" property="name"/>
<result column="address" property="address"/>
</collection>
</resultMap>