• mybatis0204 一对多查询


    查询所有订单信息及订单下的订单明细信息。

    sql语句
    
    主查询表:订单表
    关联查询表:订单明细
    
    SELECT 
      orders.*,
      user.username,
      user.sex ,
      orderdetail.id orderdetail_id,
      orderdetail.items_num,
      orderdetail.items_id
    FROM
      orders,
      USER,
      orderdetail
    WHERE orders.user_id = user.id  AND orders.id = orderdetail.orders_id
    1.1resultMap进行一对多映射思路
    
    resultMap 提供collection完成关联信息映射到集合对象中。
    
    在orders类中创建集合属性:

    1.1 mapper.xml

    <select id="findOrderAndOrderDetails" resultMap="orderAndOrderDetails" >
                SELECT 
          orders.*,
          user.username,
          user.sex ,
          orderdetail.id orderdetail_id,
          orderdetail.items_num,
          orderdetail.items_id
        FROM
          orders,
          USER,
          orderdetail
        WHERE orders.user_id = user.id  AND orders.id = orderdetail.orders_id
         </select>
    <!-- 一对多,查询订单及订单明细 -->
        <!-- type="orders"为返回值类型, -->
        <resultMap type="orders" id="orderAndOrderDetails" extends="ordersUserResultMap">
            <!-- 映射订单信息,和用户信息,这里使用继承ordersUserResultMap -->
            
            <!-- 映射订单明细信息 
            property:要将关联信息映射到orders的哪个属性中
            ofType:集合中pojo的类型
            -->
            <collection property="orderdetails" ofType="cn.itcast.mybatis.po.Orderdetail">
                <!-- id:关联信息订单明细Orderdetail的唯 一标识
                property:Orderdetail的属性名
                  -->
                <id column="orderdetail_id" property="id"/>  id为Orderdetail的id属性
                <result column="items_num" property="itemsNum"/>
                <result column="items_id" property="itemsId"/>
            </collection>
        
        </resultMap>
    <resultMap type="orders" id="ordersUserResultMap">
            <!-- 完成了订单信息Order的映射配置 -->
            <id column="id" property="id"/>        <!-- Orders的id,整个查询的唯一标识就是Orders的id -->
            <result column="user_id" property="userId"/><!-- Orders的userId-->
            <result column="number" property="number"/>
            <result column="createtime" property="createtime"/>
            <result column="note" property="note"/>
            
            <!-- 下边完成关联信息User的映射
            association:用于对关联信息User映射到单个pojo(Orders)
            property:要将关联信息映射到orders的哪个属性中
            javaType:关联信息映射到orders的属性的类型,是user的类型
             -->
            <association property="user" javaType="user">
                <!-- id:关联信息User的唯 一标识  -->
                <!-- property: 要映射到user的哪个属性中-->
                <id column="user_id" property="id"/>id为User的id
                <!-- result就是普通列的映射 -->
                <result column="username" property="username"/>
                <result column="sex" property="sex"/>
            
            </association>
            
        </resultMap>

    mapper.java

    测试:

    // 一对多查询使用resultMap
        @Test
        public void testFindOrderAndOrderDetails() throws Exception {
    
            SqlSession sqlSession = sqlSessionFactory.openSession();
            // 创建mapper代理对象
            OrdersMapperCustom ordersMapperCustom = sqlSession
                    .getMapper(OrdersMapperCustom.class);
    
            // 调用方法
            List<Orders> list = ordersMapperCustom.findOrderAndOrderDetails();
    
            System.out.println(list);
        }

    User.java

    public class User implements Serializable {
        private int id;
        private String username;// 用户姓名
        private String sex;// 性别
        private Date birthday;// 生日
        private String address;// 地址

    Orderdetail.java

    public class Orderdetail implements Serializable {
        private Integer id;
    
        private Integer ordersId;
    
        private Integer itemsId;
    
        private Integer itemsNum;
        
        //商品信息
        private Items items;

     

  • 相关阅读:
    iOS-Block的多种使用
    iOS-验证码倒计时60秒
    iOS-AFNetworking-上传图片
    Xcode 报错信息
    iOS-定时器
    iOS-开发技巧-页面布局
    iOS-nil,Nil,NULL的区别
    iOS-Debug
    iOS-NSDate
    iOS-生命周期
  • 原文地址:https://www.cnblogs.com/yaowen/p/4872726.html
Copyright © 2020-2023  润新知