一、需求:把靶器官的数据,单独拿出来作为一个从表,以List的方式接收这段数据;
此时分析,是需要有两个实体的,一个是主表的实体,一个是从表的实体,并在主表实体新增一个List 字段来接收从表的实体数据 ----->
二、建立两个实体:SysResidentReplenish (主表实体)、SysResidentReplenishDetail(从表实体)
/** 靶器官筛查情况列表 */
@TableField(exist = false)
private List<SysResidentReplenishDetail> targetList;
三、如下为原型图
四、分析实现:当前端传过来的数据,如何同时保存在主表 和 从表中
此处注意:不能采用先存入一张表,再存入另一张表的状态;
要注意事务的特性,即:当有一张表 插入不成功的时候,另一张表存入的数据可以回滚。
如此,基于springBoot 项目 采用的方式
接口继承了IService
IService 中有许多的方法
五、重写方法
serviceImpl 代码:
/**
* @描述: 重写 IService中 boolean insert(T var1);
* 重写的插入方法实现了事务管理,当子表插入失败,主表已经插入的数据会回滚
* @param
* @return boolean
*/
public boolean save(SysResidentReplenish sysResidentReplenish){
try {
sysResidentReplenishMapper.insert(sysResidentReplenish);
List<SysResidentReplenishDetail> targetList = sysResidentReplenish.getTargetList();
for (SysResidentReplenishDetail sysResidentReplenishDetail:targetList) {
sysResidentReplenishDetail.setRecordId(sysResidentReplenish.getId());
sysResidentReplenishDetailMapper.insert(sysResidentReplenishDetail);
}
}catch (Exception e){
System.out.println("error插入子表失败:"+e.getMessage());
return false;
}
return true;
}