一、需求分析

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

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


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. 为什么要装Tomcat?

    来说一说C/S架构和B/S架构   先来说说为什么C/S框架不用对tomcat之类的部署?   其中主要的原因在与这种结构本身就是有服务器来提供服务的,客户端来使用服务.   再者说为什么B/S架构要 ...

  2. Restful API 架构与设计参考原则

    1. 什么是RESTREST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移. 它首次出现在2000年Roy Fielding的博 ...

  3. cv相关博客文章

    收藏些图像处理,机器学习,深度学习方面比较不错的文章,时常学习,复习和膜拜吧... 图像方面(传统CV): 1. SIFT特征 https://www.cnblogs.com/wangguchangq ...

  4. SQL优化 | Oracle 绑定变量

    之前整理过一篇有关绑定变量的文章,不太详细,重新补充一下. Oracle 绑定变量 http://www.cndba.cn/Dave/article/1275 一.绑定变量 bind variable ...

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

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

  6. SQL-W3School-测验:SQL 测验

    ylbtech-SQL-W3School-测验:SQL 测验 1.返回顶部 1. 您可以通过 W3SCHOOL 的测验程序来测试您的 SQL 技能. 关于本测验 本测验包含 20 道题,每道题的最长答 ...

  7. Qt编写自定义控件37-发光按钮(会呼吸的痛)

    一.前言 这个控件是好早以前写的,已经授权过好几个人开源过此控件代码,比如红磨坊小胖,此控件并不是来源于真实需求,而仅仅是突发奇想,类似于星星的闪烁,越到边缘越来越淡,定时器动态改变边缘发光的亮度,产 ...

  8. python 中 dict 的另一种用法

    python 中 dic另一种用法 描述 Python 字典(Dictionary) get() 函数返回指定键的值,如果值不在字典中返回默认值. 语法 dict={} dict.get(k1,Non ...

  9. 【Leetcode_easy】1122. Relative Sort Array

    problem 1122. Relative Sort Array 参考 1. Leetcode_easy_1122. Relative Sort Array; 2. helloacm; 完

  10. Struts2中action接收中文参数为乱码解决方法

    老实说,中文乱码问题是每个程序员会经常遇到的问题,而且也是一个很头疼的问题.网上很多关于解决中文乱码的帖子,看几个之后你会发现大都是一样的.但是我们照着做,却还是无法解决乱码问题.我也是看了好多帖子, ...