1.需求描述
表单中有表单内容,以及多个附件,在提交表单的时需要把主表的内容保存起来,同时也要将主表的ID更新的附件表中
2.解决方案
2.1表设计
2.2 接口定义
@PostMapping("/getAlarmTypeList")
public RestResponse saveAlarmRepair(@RequestBody JSONObject jsonObject){
ptwBusAlarmService.saveAlarmRepair(jsonObject);
return RestResponse.success();
}
2.3 业务层实现
public boolean saveAlarmRepair(JSONObject jsonObject) {
PtwBusAlarmEntity alarmEntity = new PtwBusAlarmEntity();
alarmEntity.setAlarmTypeId(jsonObject.getString("alarmTypeId"));
alarmEntity.setQuestionDesc(jsonObject.getString("questionDesc"));
this.save(alarmEntity);
JSONArray fileIds = jsonObject.getJSONArray("photosIds");
List<SysOssEntity> list = sysOssDao.getSysOssByIds(fileIds);
List<SysOssEntity> listNew = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
SysOssEntity sysOssEntity = list.get(i);
sysOssEntity.setMainId(alarmEntity.getId());
listNew.add(sysOssEntity);
}
return sysOssService.updateBatchById(listNew);
}
2.4 dao层实现
List<SysOssEntity> getSysOssByIds(@Param("sysOssIds")JSONArray sysOssIds);
2.5 xml方法实现
<select id="getSysOssByIds" resultType="com.quantitative.biz.modules.oss.entity.SysOssEntity">
SELECT
T.ID,
T.URL,
T.MAIN_ID
FROM SYS_OSS T
WHERE
T.ID IN
<foreach item="item" index="index" collection="sysOssIds"
open="(" separator="," close=")">
#{item}
</foreach>
</select>
3. 总结
3.1根据多个ID进行查询是需要注意
3.2使用mybatis的foreach进行循环
3.3 采用苞米豆封装的批量更新方法
参考:https://blog.csdn.net/qq_29072049/article/details/81384795