接下来我们为新实体创建映射:
package com.lugew.springbootddd;import lombok.Getter;import lombok.Setter;import javax.persistence.Entity;import javax.persistence.Id;@Entity@Setter@Getterpublic class SnackDto {@Idprivate 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@Setterpublic class SlotDto {@Id@GeneratedValueprivate 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@Entitypublic class SnackMachineDto {@Id@GeneratedValueprivate 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(newMoney(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会自动创建数据库表。
