集合批量一条一条的添加进数据库
例一:材料模块添加附件信息(多文件传过来的是个集合)进附件表
//创建材料信息的时侯批量添加附件信息
public JSONObject createCheckEvent(CheckEventDetail checkEventDetail) {
// 新增事件
Long eventId = createEvent(checkEventDetail);
// 新增附件表
createEventAdjunct(eventId, checkEventDetail.getPhotos(), checkEventDetail.getAdjuncts());
}
private void createEventAdjunct(Long eventId, List<FileInfo> photoList, List<FileInfo> adjunctList) {
List<EventAdjunct> adjuncts = new ArrayList<>();
EventAdjunct eventAdjunct;
if (photoList != null && photoList.size() > 0) {
for (FileInfo photo : photoList) {
eventAdjunct = new EventAdjunct();
eventAdjunct.setEventId(eventId);
eventAdjunct.setFileId(photo.getFileId());
eventAdjunct.setFileName(photo.getFileName());
eventAdjunct.setFilePath(photo.getFilePath());
eventAdjunct.setFileType(MaterialConstant.FILETYPE_PHOTO);
adjuncts.add(eventAdjunct);
}
}
if (adjunctList != null && adjunctList.size() > 0) {
for (FileInfo adjunct : adjunctList) {
eventAdjunct = new EventAdjunct();
eventAdjunct.setEventId(eventId);
eventAdjunct.setFileId(adjunct.getFileId());
eventAdjunct.setFileName(adjunct.getFileName());
eventAdjunct.setFilePath(adjunct.getFilePath());
eventAdjunct.setFileType(MaterialConstant.FILETYPE_ADJUNCT);
adjuncts.add(eventAdjunct);
}
}
if (adjuncts.size() > 0) {
List<Long> adjunctIds = otherService.getSequenceStartAndEnd(EventAdjunct.class, adjuncts.size());
Long adjunctId;
for (int i = 0; i < adjuncts.size(); i++) {
adjunctId = adjunctIds.get(i);
adjuncts.get(i).setAdjunctId(adjunctId);
}
eventAdjunctMapper.batchInsert(adjuncts);
}
}
例二:添加流程步骤
集合workSteps:
[{“stepNo”:“1”,“stepName”:“检验第一阶段”,“stepType”:“1”,“isAvailable”:1},
{“stepNo”:“2”,“stepName”:“检验第二阶段”,“stepType”:“2”,“isAvailable”:1},
{“stepNo”:“3”,“stepName”:“检验第三阶段”,“stepType”:“2”,“isAvailable”:1}]
添加进WorkStep表
实现类serviceImpl:
WorkStep workStep;
Long stepId;
//首先定义一个集合
List<WorkStep> insertWorkSteps = new ArrayList<>();
for(int i = 0; i< workSteps.size(); i++){
//workSteps集合的其中一个作为一个对象
workStep = workSteps.get(i);
stepId = stepIds.get(i);
//给每一个对象设置对象特有的值
workStep.setStepId(stepId);
workStep.setWorkFlowId(workFlowId);
workStep.setCreateUser(userId);
workStep.setUpdateUser(userId);
workStep.setIsAvailable(MaterialConstant.ISAVAILABLE_YES);
//设置好后重新放入一个新建的集合里
insertWorkSteps.add(workStep);
}
//批量添加
workStepMapper.batchInsert(insertWorkSteps);
mapper层:
int batchInsert(@Param("workSteps") List<WorkStep> workSteps);
mapper.xml层
<insert id="batchInsert" parameterType="java.util.List">
INSERT INTO `WorkStep` (`stepId`, `workFlowId`, `stepNo`,
`stepName`, `stepType`, `isAvailable`,
`createUser`, `updateUser`)
VALUES
<foreach collection="workSteps" item="workStep" separator=",">
(#{workStep.stepId,jdbcType=BIGINT},#{workStep.workFlowId,jdbcType=BIGINT},#{workStep.stepNo,jdbcType=INTEGER},
#{workStep.stepName,jdbcType=VARCHAR},#{workStep.stepType,jdbcType=INTEGER},1,
#{workStep.createUser,jdbcType=BIGINT},#{workStep.updateUser,jdbcType=BIGINT})
</foreach>
</insert>