分布式项目 17 补充,关于pojo中的几张表耦合,需要同时提交新数据的情况

01.在order订单系统中,提交一张订单,会产生三个数据,一个是order本身的数据,一个的order_items,订单中的商品数据,还有一个shipping,物流的数据。

如何在同一时间内,同时提交三个数据呢?

在主表中order里面这样写:

package com.jt.pojo;

import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import lombok.Data;
import lombok.experimental.Accessors;

@TableName("tb_order")
@Data
@Accessors(chain=true)
public class Order extends BasePojo{
	@TableField(exist=false)	//入库操作忽略该字段
	private OrderShipping orderShipping;
								//封装订单商品信息  一对多
	@TableField(exist=false)	//入库操作忽略该字段
	private List orderItems;
	
	@TableId
    private String orderId;
    private String payment;
    private Integer paymentType;
    private String postFee;
    private Integer status;
    private Date paymentTime;
    private Date consignTime;
    private Date endTime;
    private Date closeTime;
    private String shippingName;
    private String shippingCode;
    private Long userId;
    private String buyerMessage;
    private String buyerNick;
    private Integer buyerRate;

}

其中的
@TableField(exist=false) //入库操作忽略该字段
private OrderShipping orderShipping;
//封装订单商品信息 一对多
@TableField(exist=false) //入库操作忽略该字段
private List orderItems;
01.这个两个属性都不是数据库中的order表原有的属性,这个是java项目中自己添加的新的属性,数据库中没有对应的项。这里使用注解TableField,exist等于false。可以完成相关的属性的创建。
02.注意到order表中的主键@TableId
private String orderId;,并没有使用主键自增的样子,这个是因为主键的自增+1,是需要查询主键这一列的id最大值后才进行的,但是由于order后来的数据会比较的大,所以,查询最大值的这个操作就可以优化,这里的orderid还是主键,但是不会自增了,而是采用userid+当前时间戳来表示,这样也会是具有唯一性。

你可能感兴趣的:(分布式,mybatis,java)