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

  • 相关阅读:
    asm
    chrome-vimium在markdown插件的页面失去效果
    chrome-如何给simple world highlighter添加开关
    调整Chrome中文字体为雅黑
    最新版本的Chrome浏览器如何设置网页编码?
    访问sharepoint站点自动使用当前用户名和密码登录
    请停用以开发者模式运行的扩展
    ARM Instruction Set
    阿里前端面试
    原型链
  • 原文地址:https://www.cnblogs.com/justdoitba/p/8051676.html
Copyright © 2011-2022 走看看