zoukankan      html  css  js  c++  java
  • Mybatis 查询一个对象包含多个子对象 (List 包含 List)

    功能:查询一个数据列表 且每个数据中包含各自的子数据集合

    使用场景:1. 当需要查询多订单数据且同时订单数据中需要包含订单明细数据时

                     2. 当需要查询多评论数据且同时评论数据中需要包含评论回复数据时

    功能效果概述图:

    1. Dao 层定义

    package com.ljw.dao;
    
    import java.util.List;
    import com.ljw.vo.Order;
    
    public interface OrderMapper {
    List<Order> findAllOrder();
    }

    2. Mybatis 配置

    <!-- 实体类映射 -->
    <resultMap type="cn.ljw.vo.Order" id="OrderMap">
    <id column="order_id" jdbcType="INTEGER" property="orderId" />
    <result column="order_number" jdbcType="VARCHAR" property="orderNumber" />
    <result column="order_time" jdbcType="TIMESTAMP" property="orderTime" />
    <collection property="orderDetails" ofType="cn.ljw.vo.OrderDetail" javaType="java.util.List">
    <id column="detail_order_detail_id" jdbcType="INTEGER" property="orderDetailId" />
    <result column="detail_order_id" jdbcType="INTEGER" property="orderId" />
    <result column="detail_commodity_name" jdbcType="VARCHAR" property="commodityName" />
    <result column="detail_commodity_number" jdbcType="INTEGER" property="commodityNumber" />
    </collection>
    </resultMap>
    
    <!-- 查询代码 -->
    <select id="findAllOrder" resultMap="OrderMap">
    SELECT
    order.order_id,
    order.order_number,
    order.order_time,
    order_detail.order_detail_id AS detail_order_detail_id,
    order_detail.order_id AS detail_order_id,
    order_detail.commodity_name AS detail_commodity_name,
    order_detail.commodity_number AS detail_commodity_number
    FROM order
    LEFT JOIN order_detail ON order.order_id = order_detail.order_id
    </select>

    3. po 实体类定义

    /**
    * 订单表
    */
    public class Order implements Serializable {
    /**
    * 订单ID
    */
    private Integer orderId;
    /**
    * 订单编号
    */
    private String orderNumber;
    /**
    * 订单时间
    */
    private Date orderTime;
    /**
    * 订单明细集合
    */
    private List<OrderDetail> orderDetails;
    
    public Integer getOrderId() {
    return orderId;
    }
    public void setOrderId(Integer orderId) {
    this.orderId = orderId;
    }
    public String getOrderNumber() {
    return orderNumber;
    }
    public void setOrderNumber(String orderNumber) {
    this.orderNumber = orderNumber;
    }
    public Date getOrderTime() {
    return orderTime;
    }
    public void setOrderTime(Date orderTime) {
    this.orderTime = orderTime;
    }
    public List<OrderDetail> getOrderDetails() {
    return orderDetails;
    }
    public void setOrderDetails(List<OrderDetail> orderDetails) {
    this.orderDetails = orderDetails;
    }
    }



    /** * 订单明细表 */ public class OrderDetail implements Serializable { /** * 订单明细ID */ private Integer orderDetailId; /** * 订单ID */ private Integer orderId; /** * 商品名称 */ private String commodityName; /** * 商品数量 */ private Integer commodityNumber; public Integer getOrderDetailId() { return orderDetailId; } public void setOrderDetailId(Integer orderDetailId) { this.orderDetailId = orderDetailId; } public Integer getOrderId() { return orderId; } public void setOrderId(Integer orderId) { this.orderId = orderId; } public String getCommodityName() { return commodityName; } public void setCommodityName(String commodityName) { this.commodityName = commodityName; } public Integer getCommodityNumber() { return commodityNumber; } public void setCommodityNumber(Integer commodityNumber) { this.commodityNumber = commodityNumber; } }
  • 相关阅读:
    Struts之上传
    Struts之准备工作
    前端--关于背景、浮动和定位
    javascript学习目录
    audio和video元素
    js实现动态操作table
    jquery全选、反选、全不选
    js实现页面跳转
    10 个非常有用的 AngularJS 框架
    JavaScript 语言基础知识点总结(思维导图)
  • 原文地址:https://www.cnblogs.com/iwenwen/p/11082972.html
Copyright © 2011-2022 走看看