(六)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); }
}
结果:

(六)mybatis之多对一关系(简单)的更多相关文章
- MyBatis中多对多关系的映射和查询
先说一下需求: 在页面上显示数据库中的所有图书,显示图书的同时,显示出该图书所属的类别(这里一本书可能同时属于多个类别) 创建表: 笔者这里使用 中间表 连接 图书表 和 图书类别表,图书表中 没有使 ...
- Hibernate框架学习(六)——一对多&多对一关系
一.关系表达 1.表中的表达 2.实体中的表达 3.orm元数据中的表达 一对多:(在Customer.hbm.xml中添加) 多对一:(在LinkMan.hbm.xml中添加) 最后别忘了在hibe ...
- (七)mybatis之多对一关系(复杂)
一.需求分析 需求:查询所有消费者信息,关联查询订单及商品信息,订单明细信息中关联查询查商品信息. 分析:一个消费者有多条订单,一条订单只有一个消费者但是有多条订单明细,一条订单明细只有一个商品信息. ...
- NHibernate初学六之关联多对多关系
1:创建三张表T_Course.T_Student.T_Middle:其中一个学生可以对应多个课程,一个课程也可以对应多个学生,用T_Middle存放它们的关系内容: CREATE TABLE [db ...
- mybatis多表查询之多对多关系查询的实现-xml方式
Mybatis对于多对多关系下的查询提供了集合(collection)的概念来解决,collection属性是resultMap高级结果映射的子集,首先,在本例中我们使用的是集合元素来解决多对多的查询 ...
- 六 mybatis高级映射(一对一,一对多,多对多)
1 订单商品数据模型 以订单商品数据为模型,来对mybaits高级关系映射进行学习.
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第六章:管理产品图片——多对多关系(上篇)
在这章中,我们将学习如何创建一个管理图片的新实体,如何使用HTML表单上传图片文件,并使用多对多关系将它们和产品关联起来,如何将图片存储在文件系统中.在这章中,我们还会学习更加复杂的异常处理,如何向模 ...
- mybatis整合spring 之 基于接口映射的多对一关系
转载自:http://my.oschina.net/huangcongmin12/blog/83731 mybatis整合spring 之 基于接口映射的多对一关系. 项目用到俩个表,即studen ...
- Hibernate实体映射文件多对多等关系简单应用技巧
认真开完以后,就能很简单的写出各种关系了 第一步,写注释: <!--xx属性,本类与Yy(类)的多对一 --> <!--xx属性,本类与Yy(类)的一对多 --> <!- ...
随机推荐
- Docs-.NET-C#-指南-语言参考-预处理器指令:#error(C# 参考)
ylbtech-Docs-.NET-C#-指南-语言参考-预处理器指令:#error(C# 参考) 1.返回顶部 1. #error(C# 参考) 2015/07/20 #error 可从代码中的特定 ...
- Mybase解决保存文件后再打开不能修改编辑
1.问题复现 2.解决方式 3.可以修改编辑
- pytorch0.4.1安装
pytorch官网:https://pytorch.org/ 这里安装pytorch0.4.1版本(最新版本为1.3.0系列,但是在跑github上的一些项目时会不断地报“ UseWarinig:Le ...
- 如何让在panel里的子窗体随panel的大小改变而变化?(转)
private void Form1_Load(object sender, EventArgs e) { frm=new Form2(); ...
- 学习 TTreeView [16] - 给 TTreeView 添加复选框 (回复 "丁永其" 的问题)
问题来源: http://www.cnblogs.com/del/archive/2008/05/15/1114450.html#1199402 本例效果图: unit Unit1; interfac ...
- Python 解析式、生成器
标准库datetime datetime模块 对日期.时间.时间戳的处理 datetime类 类方法 today() 返回本地时区当前时间的datetime对象 now(tz=None) 返回当前时间 ...
- js实现div吸顶效果
<script src="http://cdn.bootcss.com/jquery/1.11.1/jquery.min.js"></script> < ...
- windows 2008+IIS7+Mysql+PHP5.5 + FastCGI环境配置
一.软件下载 操作系统:Windows Server 2008 R2 Enterprise (1)IIS:windows server2008系统是自带的,但要用户自己全新安装,具体方法见教程下方 ( ...
- java面试考点-面试准备
面试前准备 了解应试公司相关信息及岗位信息 系统复习基础知识 对原公司负责项目进行梳理 阅读常规框架源码 学习典型架构案例 针对招聘文案准备加分项 相关技能 基础知识:进程/线程,TCP协议,HTTP ...
- C#基础知识学习 三