• (六)mybatis之多对一关系(简单)


    一、需求分析

    • 需求:    查询所有订单信息及订单下的订单明细信息
    • 分析:      一条订单只能由一个消费者下单,但是一条订单有多条订单明细。

    二、创建数据库表和实体对象

    
    
    Customer.java
    package com.shyroke.entity;
    
    public class Customer {
        private int id;
        private String name;
        private String sex;
        private String birthday;
    
    //隐藏setget方法和toString方法
    }


    OrderDesc.java
    package com.shyroke.entity;
    
    public class OrderDesc {
        private int id;
        private String num;
        private String itemsId;
        private String ordersId;
    
       
    //隐藏setget方法和toString方法
    }

    Order.java
    package com.shyroke.entity;
    
    import java.util.List;
    
    public class Order {
        private int orderId;
        private String Number;
        private String createTime;
        private String note;
    
        // 关联消费者信息,是一对一关系
        private Customer customer;
    
        // 关联订单明细信息,是一对多关系
        private List<OrderDesc> orderDescList;
    
    //隐藏setget方法和toString方法
    }

    三、创建OrderMapper.java和OrderMapper.xml文件

    OrderMapper.java

    package com.shyroke.mapper;
    
    import java.util.List;
    
    import com.shyroke.entity.Order;
    
    public interface OrderMapper {
        public List<Order> getOrderAndDescList(); 
    }

    OrderMapper.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
      PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
      "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.shyroke.mapper.OrderMapper">
        <resultMap type="com.shyroke.entity.Order" id="orderMap">
            <id column="order_id" property="orderId" />
            <result column="order_number" property="Number" />
            <result column="order_createTime" property="createTime" />
            <result column="order_note" property="note" />
    
    <!-- 关联消费者信息,一对一关系用association 标签 --> <association property="customer" javaType="com.shyroke.entity.Customer"> <id column="user_id" property="id" /> <result column="user_name" property="name" /> <result column="user_sex" property="sex" /> <result column="user_birthday" property="birthday" /> </association> <!-- property: 要将关联信息映射到orders的哪个属性中 ofType: 集合中的pojo属性 --> <collection property="orderDescList" ofType="com.shyroke.entity.OrderDesc"> <id column="orders_desc_id" property="id" /> <result column="orders_desc_num" property="num" /> <result column="orders_desc_items_id" property="itemsId" /> <result column="orders_desc_orders_id" property="ordersId" /> </collection> </resultMap> <select id="getOrderAndDescList" resultMap="orderMap"> select orders.*,ordersDesc.*,customer.* from orders, ordersDesc, customer where ordersDesc.orders_desc_orders_id=orders.order_id and customer.user_id=orders.user_id </select> </mapper>
    • 一对一关系用association 标签,一对多关系用collection 标签

    四、测试

    package com.shyrolk.firstMybatis;
    
    import java.awt.image.ImageProducer;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.swing.plaf.synth.SynthSeparatorUI;
    
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
    import com.shyroke.entity.Order;
    import com.shyroke.mapper.OrderMapper;
    
    
    
    /**
     * Hello world!
     *
     */
    public class App 
    {
        public static void main( String[] args ) throws IOException
        {
            String resource="resource/mybatis-config.xml";
            InputStream inputStream=Resources.getResourceAsStream(resource);
            SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
        
        SqlSession session=sessionFactory.openSession();
        
        OrderMapper orderMapper=session.getMapper(OrderMapper.class);
       List<Order> orderList= orderMapper.getOrderAndDescList();
        
       System.out.println(orderList);
       
       
        }
    }

    结果:

  • 相关阅读:
    刚子扯谈 活着 没那么简单
    改写整数
    刚子扯谈:一起聊聊微信这孙子
    刚子扯谈:未完待续的微信5.0
    Citrix 服务器虚拟化之十 Xenserver高可用性HA
    JS实现——俄罗斯方块
    一种文件捆绑型病毒研究
    XP系统登录界面,需要手动点击用户帐户后才会出现输入密码的界面
    加密javascript代码
    Python的在线编辑环境
  • 原文地址:https://www.cnblogs.com/shyroke/p/7605371.html
Copyright © 2020-2023  润新知