zoukankan      html  css  js  c++  java
  • (六)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);
       
       
        }
    }

    结果:

  • 相关阅读:
    windows上phpstudy配置memcache
    获取全站详情链接,并输出为txt文本
    Linux 宝塔面板免费版开启 waf 防火墙的方法
    where条件多种情况
    网站加https
    git常用命令
    缓存
    Stream转换成byte[] 、将 byte[] 转成 Stream 、Stream和文件的转换、从文件读取 Stream
    C#发送邮件
    Ref和Out的区别
  • 原文地址:https://www.cnblogs.com/shyroke/p/7605371.html
Copyright © 2011-2022 走看看