zoukankan      html  css  js  c++  java
  • mybatis由浅入深day02_3一对多查询

    一对多查询

      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中。

  • 相关阅读:
    hdu 1568 (log取对数 / Fib数通项公式)
    整数对(hdu1271)找规律
    Pupu(hdu3003)数论
    哈密顿绕行世界问题(hdu2181)
    Saving HDU(hdu2111,贪心)
    素数回文(hdu1431)
    Hashmat the brave warrior(UVa10055)简单题
    Moon Game (凸四边形个数,数学题)
    Zipper(poj2192)dfs+剪枝
    不要62(hdu2089)
  • 原文地址:https://www.cnblogs.com/justdoitba/p/8051676.html
Copyright © 2011-2022 走看看