12.高级映射(一对多查询)

1.需求

查询订单及订单明细信息。

2.sql语句

确定主查询表:订单表
确定关联查询表:订单明细
在一对一查询基础上添加订单明细表关联即可


要求:
对orders的映射不能出现重复记录。
在orders.java中添加List<OrderDetail> orderDetails属性,最终将订单信息映射到orders中,订单所对应的订单明细映射到orders中的orderDetails属性中。

1)在Orders中添加List<OrderDetail> orderDetails属性

//订单明细 一对多查询使用
    private List<OrderDetail> orderDetails;

    public List<OrderDetail> getOrderDetails() {
        return orderDetails;
    }

    public void setOrderDetails(List<OrderDetail> orderDetails) {
        this.orderDetails = orderDetails;
    }

2)OrderCustomMapper.xml


    <!--查询订单关联查询用户及订单明细,使用resultMap-->
    <select id="findOrdersAndOrderDetailResultMap"  resultMap="OrdersAndOrderDetailResultMap">
        SELECT orders.* ,user.username,user.sex,user.address,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
    </select>

3)定义resultMap

<!-- 订单关联查询用户及订单明细
         继承了单关联查询用户的resultMap
         就不需要再写订单信息和用户信息的映射了
    -->
    <resultMap id="OrdersAndOrderDetailResultMap" type="com.chinglee.mybatis.pojo.Orders" extends="OrdersUserResultMap">
        <collection property="orderDetails " ofType="com.chinglee.mybatis.pojo.OrderDetail">
            <id column="orderdetail_id" property="id"/>
            <result column="items_id" property="itemsId"/>
            <result column="items_num" property="itemsNum"/>
            <result column="orders_id" property="ordersId"/>

        </collection>
    </resultMap>

4)OrderCustomMapper.java

//查询订单(关联用户)及订单明细
    public List<Order> findOrdersAndOrderDetailResultMap() throws Exception;

5)测试

 @Test
    public void findOrdersAndOrderDetailResultMapTest() throws Exception {
        SqlSession sqlSession=sqlSessionFactory.openSession();
        //创建代理对象
        OrderCustomMapper orderCustomMapper= sqlSession.getMapper(OrderCustomMapper.class);
        //调用mapper的方法
        List<Order> list =orderCustomMapper.findOrdersAndOrderDetailResultMap();
        System.out.println(list);
        sqlSession.close();
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容