例如:
保存部门信息【部门中会存在多个员工信息】
思路:
Dto接收参数(同时接收员工信息),中间可以转Do,可以用Po封装详情
实现:
Controller:
@PostMapping("/add")
public ApiResult<Boolean> addDeptInfo(@Volid @ResquestBody DeptInfoAddDto deptInfoAddDto){
deptInfoService.addDeptInfo(deptInfoAddDto);
return ApiResult.ok();
}
@PostMapping("/update")
public ApiResult<Boolean> updateDeptInfo(@Volid @ResquestBody DeptInfoUpdateDto deptInfoupdateDto){
deptInfoService.updateDeptInfo(deptInfoUpdateDto);
return ApiResult.ok();
}
@PostMapping("/delete/{id}")
public ApiResult<Boolean> deleteDeptInfo(@PathVariable("id") Long id){
deptInfoService.deleteDeptInfo(id);
return ApiResult.ok();
}
其中:DeptInfoAddDto / DeptInfoupdateDto
@Data
public class DeptInfoAddDto {
private Long id;
private String deptName;
private String deptCode;
...
private List<EmpInfoAddDto> empInfoList;
}
@Data
public class DeptInfoUpdateDto {
private Long id;
private String deptName;
private String deptCode;
...
private List<EmpInfoUpdateDto> empInfoList;
}
Service:
@Transactional(rollbackFor = Exception.class)
public Long addDeptInfo(DeptInfoAddDto deptInfoAddDto){
//将Dto转为Do
DeptInfoDo deptInfoDo = DeptInfoConvert.INSTANCE.deptInfoAddDto2deptInfoDo(deptInfoAddDto);
return deptInfoDomain.save(deptInfoDo);
}
@Transactional(rollbackFor = Exception.class)
public void updateDeptInfo(DeptInfoUpdateDto deptInfoUpdateDto){
//将Dto转为Do
DeptInfoDo deptInfoDo = DeptInfoConvert.INSTANCE.deptInfoUpdateDto2deptInfoDo(deptInfoUpdateDto);
deptInfoDomain.update(deptInfoDo);
}
@Transactional(rollbackFor = Exception.class)
public void deleteDeptInfo(Long id){
deptInfoDomain.delete(id);
}
其中DeptInfoDo :
@Data
@Table("数据库表名")
public class DeptInfoDo extends DeptInfo{
private List<EmpInfo> empInfoList;
}
Domain:
public Long save(DeptInfoDo deptInfoDo){
//将Do转为实体
DeptInfo deptInfo = DeptInfoConvert.INSTANCE.deptInfoDo2deptInfo(deptInfoAddDto);
deptInfoMapper.save(deptInfo);
return deptInfo.getId();
}
public void update(DeptInfoDo deptInfoDo){
//将Do转为实体
DeptInfo deptInfo = DeptInfoConvert.INSTANCE.deptInfoDo2deptInfo(deptInfoAddDto);
deptInfoMapper.updateById(deptInfo);
}
public void delete(Long id){
deptInfoMapper.delete(id);
}
详情信息时,可以封装Po:
@Data
@Table("数据库表名")
public class DeptInfoPo extends DeptInfo{
private List<EmpInfo> empInfoList;
}