8、Mybatis表关联----一对多

环境搭建参考:MyBatis表关联—-一对一


一对多

应用场景:首先根据用户 ID 读取一个用户信息,然后再读取这个用户所拥有的订单(orders)。
在User类中添加一个orders的集合:

private List<Orders> orders;

public List<Orders> getOrders() {
    return orders;
}
public void setOrders(List<Orders> orders) {
    this.orders = orders;
}

mapper.xml:

<resultMap type="user" id="ordersMap">
    <id property="id" column="id"/>
    <result property="username" column="username"/>
    <result property="address" column="address"/>
    <result property="sex" column="sex"/>
    <result property="birthday" column="birthday"/>
    <!-- collection标签用于配置一对多 -->
    <collection property="orders" javaType="list" ofType="orders">
        <id property="id" column="oid"/>
        <result column="userId" property="userId"/>
        <result column="number" property="number"/>
        <result column="createtime" property="createtime"/>
        <result column="note" property="note"/>
    </collection>
</resultMap>
<!-- 查询某一id的user及他的所有订单 -->
<select id="queryUserOrdersById" parameterType="int" resultMap="ordersMap">
    SELECT 
    u.*,
    o.id oid,
    o.number,
    o.createtime
    FROM 
    USER u
    LEFT JOIN  orders o ON o.userId = u.id
    WHERE u.id=#{id}
</select>

测试:

public void TestQueryUserOrdersById(){
    SqlSession session = sqlSessionFactory.openSession();
    OrdersMapper mapper = session.getMapper(OrdersMapper.class);
    List<User> userList = mapper.queryUserOrdersById(1);
    for (User user : userList) {
        System.out.println(user);
    }
    session.commit();
    session.close();
}

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值