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

来源:互联网 发布:王候将相宁有种乎翻译 编辑:程序博客网 时间:2024/06/05 01:13

环境搭建参考: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();}

这里写图片描述

原创粉丝点击