版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011063151/article/details/80930032
前言:有两个表order和item,数据库模型如下:
sql:
/*
Navicat MySQL Data Transfer
Source Server : lalala
Source Server Version : 50720
Source Host : localhost:3306
Source Database : test
Target Server Type : MYSQL
Target Server Version : 50720
File Encoding : 65001
Date: 2018-07-05 17:10:13
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for item
-- ----------------------------
DROP TABLE IF EXISTS `item`;
CREATE TABLE `item` (
`id` int(11) NOT NULL,
`content` varchar(255) DEFAULT NULL,
`order_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `fk_item_order_01` (`order_id`),
CONSTRAINT `fk_item_order_01` FOREIGN KEY (`order_id`) REFERENCES `order` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ----------------------------
-- Table structure for order
-- ----------------------------
DROP TABLE IF EXISTS `order`;
CREATE TABLE `order` (
`id` int(11) NOT NULL,
`content` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
order与item是一对多的关系
package com.test.domain;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import com.fasterxml.jackson.annotation.JsonInclude;
@Entity
@Table(name = "order")
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Order {
private Integer id;
private String content;
private Set<Item> item = new HashSet<>();
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(unique = true, nullable = false)
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
@OneToMany(cascade = CascadeType.ALL, mappedBy = "order")
public Set<Item> getItem() {
return item;
}
public void setItem(Set<Item> item) {
this.item = item;
}
public void create(Order order){
this.content = order.content;
this.item = order.item;
}
}
package com.test.domain;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import com.fasterxml.jackson.annotation.JsonInclude;
@Entity
@Table(name = "item")
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Item {
private Integer id;
private String content;
private Order order;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(unique = true, nullable = false)
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
@ManyToOne
@JoinColumn(name = "order_id")
public Order getOrder() {
return order;
}
public void setOrder(Order order) {
this.order = order;
}
public void create(Order order) {
this.order = order;
}
}
达到效果:在保存order的时候一并将item保存,而且item里面的外键要有值。
@PostMapping
public Result<Void> addOrder(@RequestBody College input) {
Order order= new Order();
//将主表的主键存放到子表的外键中 关键点
for(Item item : input.getItem()) {
item.create(order);
}
order.create(input);
orderRepository.save(order);
return Result.success();
}
如此即可!