一、需求分析

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

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


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); }
}

结果:

(六)mybatis之多对一关系(简单)的更多相关文章

  1. MyBatis中多对多关系的映射和查询

    先说一下需求: 在页面上显示数据库中的所有图书,显示图书的同时,显示出该图书所属的类别(这里一本书可能同时属于多个类别) 创建表: 笔者这里使用 中间表 连接 图书表 和 图书类别表,图书表中 没有使 ...

  2. Hibernate框架学习(六)——一对多&多对一关系

    一.关系表达 1.表中的表达 2.实体中的表达 3.orm元数据中的表达 一对多:(在Customer.hbm.xml中添加) 多对一:(在LinkMan.hbm.xml中添加) 最后别忘了在hibe ...

  3. (七)mybatis之多对一关系(复杂)

    一.需求分析 需求:查询所有消费者信息,关联查询订单及商品信息,订单明细信息中关联查询查商品信息. 分析:一个消费者有多条订单,一条订单只有一个消费者但是有多条订单明细,一条订单明细只有一个商品信息. ...

  4. NHibernate初学六之关联多对多关系

    1:创建三张表T_Course.T_Student.T_Middle:其中一个学生可以对应多个课程,一个课程也可以对应多个学生,用T_Middle存放它们的关系内容: CREATE TABLE [db ...

  5. mybatis多表查询之多对多关系查询的实现-xml方式

    Mybatis对于多对多关系下的查询提供了集合(collection)的概念来解决,collection属性是resultMap高级结果映射的子集,首先,在本例中我们使用的是集合元素来解决多对多的查询 ...

  6. 六 mybatis高级映射(一对一,一对多,多对多)

    1  订单商品数据模型 以订单商品数据为模型,来对mybaits高级关系映射进行学习.

  7. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第六章:管理产品图片——多对多关系(上篇)

    在这章中,我们将学习如何创建一个管理图片的新实体,如何使用HTML表单上传图片文件,并使用多对多关系将它们和产品关联起来,如何将图片存储在文件系统中.在这章中,我们还会学习更加复杂的异常处理,如何向模 ...

  8. mybatis整合spring 之 基于接口映射的多对一关系

    转载自:http://my.oschina.net/huangcongmin12/blog/83731 mybatis整合spring 之  基于接口映射的多对一关系. 项目用到俩个表,即studen ...

  9. Hibernate实体映射文件多对多等关系简单应用技巧

    认真开完以后,就能很简单的写出各种关系了 第一步,写注释: <!--xx属性,本类与Yy(类)的多对一 --> <!--xx属性,本类与Yy(类)的一对多 --> <!- ...

随机推荐

  1. Flutter移动电商实战 --(51)购物车_Provide中添加商品

    新加provide的cart.dart页面 引入三个文件.开始写provide类.provide需要用with 进行混入 从prefs里面获取到数据,判断有没有数据,如果有数据就返转正List< ...

  2. vue elementUI 表单校验(多层嵌套)

    <template> <el-form :model="formData" :rules="formRule" ref="formD ...

  3. 打印变量地址-0x%08x

    地址是8个16进制数. 1.8个16进制数:相当于32个二进制数.4G内存刚好可以用32位的二进制表示出来.2.因为变量或函数等等在运行时都是存储在内存中的,所以你用取地址符当然是取出计算机内存中的地 ...

  4. BitmapShader填充图形

    package com.loaderman.customviewdemo; import android.content.Context; import android.graphics.*; imp ...

  5. “kill -9” 和 “kill -15” 有什么不同

    来看下图,其中关键参数 -n signum 表示的是信号编码.   kill   kill 可以用 kill -l 来查看具体有哪些信号编码,这里重点关注 9) SIGKILL 和 15) SIGTE ...

  6. 不是springboot项目怎么使用内置tomcat

    不是springboot项目怎么使用内置tomcat   解决方法: 1.pom.xml中添加以下依赖 <properties>  <tomcat.version>8.5.23 ...

  7. 一百三十九:CMS系统之首页帖子列表布局

    # 配置ueditor上传文件到七牛UEDITOR_UPLOAD_TO_QINIU = True # 设置为True是,视为开始把图片传到七牛储存,本地不储存UEDITOR_QINIU_ACCESS_ ...

  8. selenium3 web自动化测试框架 三:项目实战中PO模型的设计与封装

    po模型设计思想 Page Object 模式主要是将每个页面设计为一个class,其中包含页面中的需要测试的元素(按钮,输入框,标题等),这样在Selenium测试页面中可以通过调取页面类来获取页面 ...

  9. 使用expect实现自动交互,shell命令行自动输入,脚本自动化,变量引用,expect spawn执行带引号命令,expect 变量为空,不生效,不能匹配通配符*,函数,数组

    背景 有需求,在允许命令或者脚本跳出交互行,需要进行内容输入,但需要人手动输入,不是很方便,此时可以通过expect来实现自动互动交互. expect是一个自动交互功能的工具,可以满足代替我们实际工作 ...

  10. Vue项目过程中遇到的小问题

    1.给router-link添加点击事件 <router-link to="" @click.native=""></router-link& ...