1 一对一查询
1.1 需求
查询订单信息关联查询用户信息(orders-->user:一个订单只能由一个用户创建 一对一 )
1.2 sql语句查询语句:
先确定主查询表:订单信息表
再确定关联查询表:用户信息
通过orders关联查询用户使用user_id一个外键,只能关联查询出一条用户记录就可以使用内连接
SELECTorders.*,
user.username,
user.sex
FROM
orders,
USER
WHERE orders.user_id = user.id
1.3 使用resultType实现
1.3.1 创建po类
基础的单表的 po类:

1.3.2 一对一查询映射的pojo
创建pojo包括 订单信息和用户信息,resultType才可以完成映射。
创建OrderCustom作为自定义pojo,继承sql查询列多的po类。

1.3.3 mapper.xml
定义mapper.xml文件,

1.3.4 mapper.java

1.4 使用resultMap实现一对一
1.4.1 resultMap映射思路
resultMap提供一对一关联查询的映射和一对多关联查询映射,一对一映射思路:将关联查询的信息映射到pojo中,如下:
在Orders类中创建一个User属性,将关联查询的信息映射到User属性中。

1.4.2 mapper.xml

1.4.3 resultMap定义

1.4.4 mapper.java

1.5 小结
resultType:要自定义pojo 保证sql查询列和pojo的属性对应,这种方法相对较简单,所以应用广泛。
resultMap:使用association完成一对一映射需要配置一个resultMap,过程有点复杂,如果要实现延迟加载就只能用resultMap实现 ,如果为了方便对关联信息进行解析,也可以用association将关联信息映射到pojo中方便解析。
2 一对多查询2.1 需求
查询所有订单信息及订单下的订单明细信息。
2.2 sql语句主查询表:订单表
关联查询表:订单明细
SELECTorders.*,
user.username,
user.sex ,
orderdetail.id orderdetail_id,
orderdetail.items_num,
orderdetail.items_id
FROM
orders,
USER,
orderdetail
WHERE orders.user_id = user.id AND orders.id = orderdetail.orders_id
2.3 resultMap进行一对多映射思路
resultMap 提供collection完成关联信息映射到集合对象中。
在orders类中创建集合属性:

2.4 mapper.xml

2.5 resultMap定义

2.6 mapper.java

3 一对多查询(复杂)
3.1 需求
查询所有用户信息,关联查询订单及订单明细信息及商品信息,订单明细信息中关联查询商品信息
3.2 sql主查询表:用户信息
关联查询:订单、订单明细,商品信息
SELECTorders.*,
user.username,
user.sex ,
orderdetail.id orderdetail_id,
orderdetail.items_num,
orderdetail.items_id,
items.name items_name,
items.detail items_detail
FROM
orders,
USER,
orderdetail,
items
WHERE orders.user_id = user.id AND orders.id = orderdetail.orders_id AND items.id = orderdetail.items_id
3.3 pojo定义
在user.java中创建映射的属性:集合 List orderlist
在Orders中创建映射的属性:集合List orderdetails
在Orderdetail中创建商品属性:pojo Items items



3.4 mapper.xml

3.5 resultMap

3.6 mapper.java
