MyBatis入门【十】一对多查询

前言

  • 本文主要讲解入门项目的基本知识
  • 本文乃是我学习笔记总结,不足之处,还望指点
  • 本文中因多处使用注释,为方便书写,若以“//”双斜杠开头的都是注释
  • 本文中为了清晰讲解基础知识,其中的代码并未完整

项目需求

需求

查询订单及订单明细的信息(大家自行脑补什么订单吧)

SQL语句

确定查询的主表:订单表
确定查询的关联表:订单明细表
(相信大家也清楚简单电商平台数据库的吧)

分析思路

分析

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

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

在orders中添加list订单明细

//订单明细
private List<OrderDetail> orderdetails;

mapper.xml

resultMap的定义

<!-- 订单及订单明细的resultMap -->
<!-- 使用继承,就可以不用再配置订单信息和用户信息的映射 -->
<resultMap type="Orders全路径" id="OrdersAndOrderDetailResultMap" extends="OrdersUserResultMap">
    <!-- 订单信息 -->
    <!-- 用户信息 -->

    <!-- 订单明细信息 -->
    <!-- 一个订单关联查询出多个明细,要使用collection进行映射 -->
    <!-- collection:对关联查询到多条记录映射到集合对象中
        property:将关联查询到多条记录映射到Orders中的哪个属性,也就是新添加的list
        ofType:指定映射到list集合属性中的pojo的类型
     -->
    <collection property="orderdetails"  ofType="OrderDetail全路径">
        <!-- id:订单明细唯一标识 -->
        <!-- property:要将订单明细的唯一标识映射到OrderDetail的哪个属性 -->
        <id column="" property=""/>
        <!-- 其他普通列 -->
        <result column="" property="" />
    </collection>
</resultMap>

关于继承的内容见MyBatis入门【九】一对一查询之resultMap

配置SQL

<!-- 查询订单关联查询用户信息 -->
<select id="findOrdersAndOrderDetailResultMap" parameterType="" resultMap="OrdersAndOrderDetailResultMap全路径">
    <!-- parameterType="",用于传入查询条件参数,在此处先进行省略 -->
    select 
        orders.* , 
        user.username, 
        user.sex, 
        user.address, 
        orderdetail.id, 
        orderdetail.num  
    from  
        orders , user,orderdetail  
    where  
        orders.id = user.id and orderdetail.id=order.id
</select>

mapper.java

public List<Orders> findOrdersAndOrderDetailResultMap(0 throws Exception;

测试

测试和一对多测试原理相同,这里投个懒,留给大家去解决了

大家可以见MyBatis入门【九】一对一查询之resultMap

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值