我们知道,订单和订单详情是一对多的关系,所以在订单Bean(OrderBean)中包含一个订单详情Bean(OrderDetailBean)的集合.

开发步骤:

1、先建好OrderDetailBean

  1 package com.november.query.zuoye1;
  2
  3 import java.sql.Date;
  4
  5 public class OrderDetailBean {
  6
  7     //订单详情实体
  8     private int orderDetailId;
  9     private int orderId;
 10     private int goodsId;
 11     private int orderAmount;
 12     private String orderMoneyPayType;
 13     private Date orderPayTime;
 14     private int isReview;
 15
 16
 17     public OrderDetailBean() {
 18         super();
 19     }
 20
 21
 22     public OrderDetailBean(int orderDetailId, int orderId, int goodsId,
 23             int orderAmount, String orderMoneyPayType, Date orderPayTime,
 24             int isReview) {
 25         super();
 26         this.orderDetailId = orderDetailId;
 27         this.orderId = orderId;
 28         this.goodsId = goodsId;
 29         this.orderAmount = orderAmount;
 30         this.orderMoneyPayType = orderMoneyPayType;
 31         this.orderPayTime = orderPayTime;
 32         this.isReview = isReview;
 33     }
 34
 35
 36     public int getOrderDetailId() {
 37         return orderDetailId;
 38     }
 39
 40
 41     public void setOrderDetailId(int orderDetailId) {
 42         this.orderDetailId = orderDetailId;
 43     }
 44
 45
 46     public int getOrderId() {
 47         return orderId;
 48     }
 49
 50
 51     public void setOrderId(int orderId) {
 52         this.orderId = orderId;
 53     }
 54
 55
 56     public int getGoodsId() {
 57         return goodsId;
 58     }
 59
 60
 61     public void setGoodsId(int goodsId) {
 62         this.goodsId = goodsId;
 63     }
 64
 65
 66     public int getOrderAmount() {
 67         return orderAmount;
 68     }
 69
 70
 71     public void setOrderAmount(int orderAmount) {
 72         this.orderAmount = orderAmount;
 73     }
 74
 75
 76     public String getOrderMoneyPayType() {
 77         return orderMoneyPayType;
 78     }
 79
 80
 81     public void setOrderMoneyPayType(String orderMoneyPayType) {
 82         this.orderMoneyPayType = orderMoneyPayType;
 83     }
 84
 85
 86     public Date getOrderPayTime() {
 87         return orderPayTime;
 88     }
 89
 90
 91     public void setOrderPayTime(Date orderPayTime) {
 92         this.orderPayTime = orderPayTime;
 93     }
 94
 95
 96     public int getIsReview() {
 97         return isReview;
 98     }
 99
100
101     public void setIsReview(int isReview) {
102         this.isReview = isReview;
103     }
104
105
106     @Override
107     public String toString() {
108         return "OrderDetialBean [orderDetailId=" + orderDetailId + ", orderId="
109                 + orderId + ", goodsId=" + goodsId + ", orderAmount="
110                 + orderAmount + ", orderMoneyPayType=" + orderMoneyPayType
111                 + ", orderPayTime=" + orderPayTime + ", isReview=" + isReview
112                 + "]";
113     }
114
115
116
117 }

2、建好OrderBean,里面放一个OrderDetailBean的集合

  1 package com.november.query.zuoye1;
  2
  3 import java.sql.Date;
  4 import java.util.List;
  5
  6 //订单实体
  7 public class OrderBean {
  8
  9     private int orderId;
 10     private int orderNo;
 11     private String userName;
 12     private int orderState;
 13     private int addressId;
 14     private Date orderTime;
 15
 16     //订单对应多个订单详情 一对多的关系,所以维护一个 集合对象
 17     List<OrderDetailBean> orderDetail;
 18
 19     public OrderBean() {
 20         super();
 21     }
 22
 23     public OrderBean(int orderId, int orderNo, String userName, int orderState,
 24             int addressId, Date orderTime, List<OrderDetailBean> orderDetail) {
 25         super();
 26         this.orderId = orderId;
 27         this.orderNo = orderNo;
 28         this.userName = userName;
 29         this.orderState = orderState;
 30         this.addressId = addressId;
 31         this.orderTime = orderTime;
 32         this.orderDetail = orderDetail;
 33     }
 34
 35     public int getOrderId() {
 36         return orderId;
 37     }
 38
 39     public void setOrderId(int orderId) {
 40         this.orderId = orderId;
 41     }
 42
 43     public int getOrderNo() {
 44         return orderNo;
 45     }
 46
 47     public void setOrderNo(int orderNo) {
 48         this.orderNo = orderNo;
 49     }
 50
 51     public String getUserName() {
 52         return userName;
 53     }
 54
 55     public void setUserName(String userName) {
 56         this.userName = userName;
 57     }
 58
 59     public int getOrderState() {
 60         return orderState;
 61     }
 62
 63     public void setOrderState(int orderState) {
 64         this.orderState = orderState;
 65     }
 66
 67     public int getAddressId() {
 68         return addressId;
 69     }
 70
 71     public void setAddressId(int addressId) {
 72         this.addressId = addressId;
 73     }
 74
 75     public Date getOrderTime() {
 76         return orderTime;
 77     }
 78
 79     public void setOrderTime(Date orderTime) {
 80         this.orderTime = orderTime;
 81     }
 82
 83     public List<OrderDetailBean> getOrderDetail() {
 84         return orderDetail;
 85     }
 86
 87     public void setOrderDetail(List<OrderDetailBean> orderDetail) {
 88         this.orderDetail = orderDetail;
 89     }
 90
 91     @Override
 92     public String toString() {
 93         return "OrderBean [orderId=" + orderId + ", orderNo=" + orderNo
 94                 + ", userName=" + userName + ", orderState=" + orderState
 95                 + ", addressId=" + addressId + ", orderTime=" + orderTime
 96                 + ", orderDetail=" + orderDetail + "]";
 97     }
 98
 99
100
101 }

3、创建接口OrderMapper.java 和  OrderMapper.xml  ,注意:这两个的命名必须相同

  OrderMapper.java写各种方法的接口,代码如下:

1 package com.november.query.zuoye1;
2
3 import java.util.List;
4
5 public interface OrderMapper {
6
7     List<OrderBean> findOrderList();
8
9 }

OrderMapper.xml  代码如下:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE mapper
 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5
 6 <!-- namespace用于区分 sql标签 ,一般为了保证唯一,namespace表示为 包名+xml文件名 -->
 7 <mapper namespace="com.november.query.zuoye1.OrderMapper">
 8
 9
10     <!-- select * from t_Order ord join t_OrderDetail detail on ord.OrderId = detail.OrderId -->
11     <!-- 查询所有订单:resultMap就是结果集映射 -->
12     <select id="findOrderList" resultMap="orderMap">
13         select * from t_Order ord join t_OrderDetail detail on ord.OrderId = detail.OrderId
14     </select>
15
16
17     <!-- 自动映射 :当属性名和 字段名一致时,会自动将字段值 装配到 属性中-->
18     <!-- id属性 ,resultMap标签的标识。
19          type属性 ,返回值的全限定类名,或类型别名。
20          autoMapping属性 ,值范围true(默认值)|false, 设置是否启动自动映射功能,
21          自动映射功能就是自动查找与字段名小写同名的属性名,并调用setter方法。
22          而设置为false后,则需要在resultMap内明确注明映射关系才会调用对应的setter方法
23      -->
24     <resultMap type="OrderBean" id="orderMap" autoMapping="true">
25         <!-- 主键 -->
26         <id property="orderId" column="OrderId"/>
27         <!-- 其他属性 -->
28         <result property="orderNo" column="OrderNo"/>
29         <result property="userName" column="UserName"/>
30         <result property="orderState" column="OrderState"/>
31         <result property="addressId" column="AddressId"/>
32         <result property="orderTime" column="OrderTime"/>
33
34         <!-- 一对多关系映射 -->
35         <!-- property="orderDetailList"的orderDetailList是OrderBean的集合属性 -->
36         <collection property="orderDetailList" ofType="OrderDetailBean" autoMapping="true">
37             <!-- orderDetailList 实体属性 和 t_OrderDetail 表字段的映射  -->
38
39             <id property="orderDetailId" column="OrderDetailId"/>
40             <result property="orderId" column="OrderId"/>
41             <result property="goodsId" column="GoodsId"/>
42             <result property="orderAmount" column="OrderAmount"/>
43             <result property="orderMoneyPayType" column="OrderMoneyPayType"/>
44             <result property="orderPayTime" column="OrderPayTime"/>
45             <result property="isReview" column="IsReview"/>
46
47         </collection>
48
49     </resultMap>
50
51 </mapper>

4、建立一个测试类 OrderTest

 1 package com.november.query.zuoye1;
 2
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5 import java.util.List;
 6
 7 import org.apache.ibatis.io.Resources;
 8 import org.apache.ibatis.session.SqlSession;
 9 import org.apache.ibatis.session.SqlSessionFactory;
10 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
11 import org.junit.Before;
12 import org.junit.Test;
13
14 public class OrderTest {
15
16     private SqlSessionFactory sqlSessionFactory = null;
17     //在执行测试方法之前 执行的 方法
18     @Before
19     public void init(){
20         //对mybatis环境进行 初始化
21         String resource = "config/mybatis.xml";
22
23         try {
24             //1)读取配置文件
25             InputStream input = Resources.getResourceAsStream(resource);
26             //2)使用SQlSessionFactoryBuilder 创建SqlSessionFactory
27             sqlSessionFactory = new SqlSessionFactoryBuilder().build(input);
28
29
30         } catch (IOException e) {
31             // TODO Auto-generated catch block
32             e.printStackTrace();
33         }
34     }
35
36     @Test
37     public void findOrderTest(){
38
39         SqlSession session = sqlSessionFactory.openSession();
40         OrderMapper mapper =  session.getMapper(OrderMapper.class);
41         List<OrderBean> list = mapper.findOrderList();
42         session.close();
43         System.out.println(list);
44     }
45
46 }

5、运行结果

转载于:https://www.cnblogs.com/xsy20181001/p/9898979.html

订单和订单详情的一对一 ,一对多映射相关推荐

  1. WMS仓库管理系统---(16)订单管理--订单打印

    订单打印是订单管理中一个非常重要的环节,订单分配完成后就可以进行订单打印操作了.订单打印会打印出订单明细,价格,总价等信息.这一节我们来看看订单打印的相关内容.订单打印会显示出库内操作人员去相应的库位 ...

  2. 微信支付分支付免押订单租赁订单thinkphp5

    智慧零售和先享后付使用微信支付V3版接口规则参见:https://wechatpay-api.gitbook.io/wechatpay-api-v3/ 免押租借和免押速住使用微信支付V2版接口规则参见 ...

  3. 【实时数仓】DWM层订单宽表之需求分析、订单和订单明细关联源码

    文章目录 一 DWM层-订单宽表 1 需求分析与思路 2 订单和订单明细关联代码实现 (1)从Kafka的dwd层接收订单和订单明细数据 a 创建订单实体类 b 创建订单明细实体类 c 在dwm包下创 ...

  4. mybatis使用resultMap实现一对多查询 (需求:查询订单以及订单明细)

    使用resultMap将查询出的订单明细信息映射Order,java的属性中 在Orders.java创建订单明细属性(一个集合对象,一订单对应多个订单明细) public class Orders ...

  5. 美多商城之订单(提交订单2)

    2.4 使用乐观锁并发下单 重要提示: 在多个用户同时发起对同一个商品的下单请求时,先查询商品库存,再修改商品库存,会出现资源竞争问题,导致库存的最终结果出现异常. 2.4.1. 并发下单问题演示和解 ...

  6. 38 MM配置-采购-采购订单-采购订单审批-定义采购订单审批过程

    业务背景:定义采购订单审批过程 事务码:SPRO SPRO路径:物料管理->采购->采购订单->采购订单的下达过程->定义采购订单审批过程 第1步,SPRO进入 第2步,选择& ...

  7. 37 MM配置-采购-采购订单-采购订单审批-编辑类

    业务背景:定义采购订单审批类 事务码:CL02 SPRO路径:物料管理->采购->采购订单->采购订单的下达过程->编辑类 第1步,SPRO进入 第2步,创建审批类 配置完成! ...

  8. 36 MM配置-采购-采购订单-采购订单审批-编辑特性

    业务背景:定义采购订单审批特性 事务码:CT04 SPRO路径:物料管理->采购->采购订单->采购订单的下达过程->编辑特性 第1步,SPRO进入 第2步,创建 采购申请 审 ...

  9. SAP 生产订单/流程订单中日期的解释

    SAP 生产订单/流程订单中日期的解释 基本开始日期:表示订单的开始日期 基本完成日期:表示订单的完成日期 我们在输入基本开始日期和基本完成日期时需要关注 调度 下面的"类型",其 ...

最新文章

  1. Nature年度十大杰出论文公布:机器狗算法、近室温超导等入选,复旦中科院上榜...
  2. GitHub:人群密度估计最全资料集锦
  3. Ubuntu之镜像iso安装系统
  4. 真实感水面绘制-资料收集
  5. 我的常用软件大公开!
  6. 使用注解装配Bean
  7. mie散射理论方程_电磁散射工程应用基础
  8. Linux网络实时流量监测工具iftop的安装使用
  9. Redis-慢查询分析
  10. Ubuntu网络连接激活失败
  11. 微信小程序,Python爬虫抓包采集实战,采集某成考题库小程序
  12. android中热更新模式,Android热更新与开启Instant Run
  13. 【看表情包学Linux】进程阻塞 | 轮询检测 | 基于非阻塞等待的轮询方案 | 进程程序替换 | exec 函数簇
  14. java基础知识--(常用类)String类
  15. java二维数奇数组金字塔_金字塔内神秘的数字~世界末日真的存在?
  16. 【历史上的今天】4 月 25 日:诺基亚与微软完成交易;Mobilinux 发布;长距离无线电传输之父出生
  17. 第十三章 使用动态SQL(三)
  18. 8.python wave 批量截取2s音频
  19. GBase 8c V5 单机版安装示例
  20. OpenWrt计划任务定时关闭WIFI

热门文章

  1. 宏病毒组(五)|病毒基因组系统发育树
  2. 使用Python实现Linux命令的批量执行
  3. Flow 是一个静态类型检测工具
  4. VIN码识别技术加速汽车后市场服务速度
  5. 蘑菇街Java后台面试总结
  6. yarn logs 查看日志
  7. java中equals方法重写详解(彻底搞定)
  8. java修饰词严格程度_Java修饰词的总结
  9. 深度学习 | MATLAB Deep Learning Toolbox lstmLayer 参数设定
  10. Like What You Like: Knowledge Distill via Neuron Selectivity Transfer论文初读