未来_我来
因为渴望改变,所以必须努力

一对多查询

  3.1 需求(查询订单及订单明细的信息)

查询订单及订单明细的信息。

 

  3.2 sql语句

确定主查询表:订单表

确定关联查询表:订单明细表

在一对一查询基础上添加订单明细表关联即可。

SELECT 
  orders.*,
  USER.username,
  USER.sex,
  USER.address,
  orderdetail.id orderdetail_id,
  orderdetail.items_id,
  orderdetail.items_num,
  orderdetail.orders_id
FROM
  orders,
  USER,
  orderdetail
WHERE orders.user_id = user.id AND orderdetail.orders_id=orders.id

 

  

  3.3 分析

使用resultType将上边的查询结果映射到pojo中,订单信息的就是重复。

  

要求:

对orders映射不能出现重复记录。

 

在orders.java类中添加List<orderDetail> orderDetails属性。

最终会将订单信息映射到orders中,订单所对应的订单明细映射到orders中的orderDetails属性中。

 

  

映射成的orders记录数为两条(orders信息不重复)

每个orders中的orderDetails属性存储了该订单所对应的订单明细。

  

  3.4 在orders中添加list订单明细属性

 

  

  3.5 mapper.xml

 

 

  

  3.6 resultMap定义

  

collection部分定义了查询订单明细信息。

collection:表示关联查询结果集

property="orderdetails"关联查询的结果集存储在cn.itcast.mybatis.po.Orders上哪个属性。

ofType="cn.itcast.mybatis.po.Orderdetail"指定关联查询的结果集中的对象类型即List中的对象类型。

<id />及<result/>的意义同一对一查询。

 

  3.7 mapper.java

  

  3.8 测试代码

 

  3.9 小结

mybatis使用resultMap的collection对关联查询的多条记录映射到一个list集合属性中。

 

使用resultType实现:

将订单明细映射到orders中的orderdetails中,需要自己处理,使用双重循环遍历,去掉重复记录,将订单明细放在orderdetails中。

 

posted on 2017-12-17 17:47  未来_我来  阅读(166)  评论(0编辑  收藏  举报

2 3
4