1
一对一查询
1.1
需求
查询订单信息关联查询用户信息(orders–>user
:一个订单只能由一个用户创建 一对一
)
1.2
sql
语句
查询语句:
先确定主查询表:订单信息表
再确定关联查询表:用户信息
通过
orders
关联查询用户使用
user_id
一个外键,只能关联查询出一条用户记录就可以使用内连接
SELECT
orders.*,
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
语句
主查询表:订单表
关联查询表:订单明细
SELECT
orders.*,
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
主查询表:用户信息
关联查询:订单、订单明细,商品信息
SELECT
orders.*,
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<Orders>
orderlist
在
Orders
中创建映射的属性:集合
List<Orderdetail> orderdetails
在Orderdetail
中创建商品属性:
pojo Items items
3.4
mapper.xml
3.5
resultMap
3.6
mapper.java