# 需求
活动对象与其他多个对象是多对多的关系,数据库中有多张中间关联表。复制一个活动,需要复制该活动与多个实体之间的关系。
# 初完成
List<ActivityTemplateDO> templateDOList = activityTemplateService.selectByTemplateActivityId(id); | |
templateDOList.stream().peek(activityTemplateDO -> activityTemplateDO.setId(null)) | |
.peek(activityTemplateDO -> activityTemplateDO.setActivityId(activityDO.getId())) | |
.forEach(activityTemplateService::insertSelective); | |
List<ChannelDTO> channelDTOList = pinDaoService.selectChannelDTOlistByActivityId(id); | |
channelDTOList.stream().peek(channelDTO -> channelDTO.setId(null)) | |
.peek(channelDTO -> channelDTO.setActivityId(activityDO.getId())) | |
.forEach(pinDaoService::insertSelective); | |
List<ActivityDevice> activityDeviceList = activityDeviceService.selectDevicelistByActivityId(id); | |
activityDeviceList.stream().peek(activityDevice -> activityDevice.setId(null)) | |
.peek(activityDevice -> activityDevice.setActivityId(activityDO.getId())) | |
.forEach(activityDeviceService::insertSelective); | |
List<ActivityConnection> activityConnectionList = activityConnectionService.selectConnectionlistByActivityId(id); | |
activityConnectionList.stream().peek(activityConnection -> activityConnection.setId(null)) | |
.peek(activityConnection -> activityConnection.setActivityId(activityDO.getId())) | |
.forEach(activityConnectionService::insertSelective); | |
List<Age> ageList = ageService.selectAgelistByActivityId(id); | |
ageList.stream().peek(age -> age.setId(null)) | |
.peek(age -> age.setActivityId(activityDO.getId())) | |
.forEach(ageService::insertSelective); | |
List<Gender> genderList = genderService.selectGenderlistByActivityId(id); | |
genderList.stream().peek(gender -> gender.setId(null)) | |
.peek(gender -> gender.setActivityId(activityDO.getId())) | |
.forEach(genderService::insertSelective); |
# 解决方案
使用泛型,几个实体类继承于一个接口,几个 service 类继承于一个接口。
由于 service 类的接口需要装配到 Spring 中,并注入进来,最后并不能使代码更简单,还是采用这种看起来很蠢的代码吧。