接下来我们为新实体创建映射:
package com.lugew.springbootddd;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
@Setter
@Getter
public class SnackDto {
@Id
private long id;
private String name;
public Snack convertToSnack() {
if (id == 0) return Snack.None;
else if (id == 1) return Snack.Chocolate;
else if (id == 2) return Snack.Soda;
else return Snack.Gum;
}
}
SnackDto类很简单,只包含id和name,SlotDto则复杂一些:
package com.lugew.springbootddd;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.Entity;
import javax.persistence.*;
@Entity
@Getter
@Setter
public class SlotDto {
@Id
@GeneratedValue
private long id;
private int quantity;
private float price;
@OneToOne(cascade = CascadeType.ALL)
private SnackDto snackDto;
private int position;
public Slot convertToSlot() {
Slot slot = new Slot();
slot.setId(id);
slot.setPosition(position);
slot.setSnackPile(new SnackPile(snackDto.convertToSnack(), quantity, price));
return slot;
}
}
package com.lugew.springbootddd;
import com.lugew.springbootddd.snackmachine.Money;
import com.lugew.springbootddd.snackmachine.SnackMachine;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.Entity;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
/**
* @author 夏露桂
* @since 2021/6/10 12:00
*/
@Getter
@Setter
@Entity
public class SnackMachineDto {
@Id
@GeneratedValue
private long id;
private int oneCentCount;
private int tenCentCount;
private int quarterCount;
private int oneDollarCount;
private int fiveDollarCount;
private int twentyDollarCount;
private float moneyInTransaction;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "snackMachineId")
private List<SlotDto> slotDtoList;
public SnackMachine convertToSnackMachine() {
SnackMachine snackMachine = new SnackMachine();
snackMachine.setId(id);
snackMachine.setMoneyInTransaction(moneyInTransaction);
snackMachine.setMoneyInside(new
Money(oneCentCount, tenCentCount, quarterCount,
oneDollarCount, fiveDollarCount, twentyDollarCount));
List<Slot> slotList = new ArrayList<>();
for (SlotDto slotDto : slotDtoList) {
slotList.add(slotDto.convertToSlot());
}
snackMachine.setSlots(slotList);
return snackMachine;
}
}
重启系统后,Springboot会自动创建数据库表。