一.批量插入
1.方法
这样可以优化批量插入性能
// 批量保存记录
private void saveBatchRecords(List<QualityFreezeOperationRecord> insertList) {
// 批量保存
if(insertList.size()>0){
try {
int len = 10;
int size = insertList.size();
int count = (size + len - 1) / len;
for (int i = 0; i < count; i++) {
List<QualityFreezeOperationRecord> subList = insertList.subList(i * len, (Math.min((i + 1) * len, size)));
baseMapper.saveRecord(subList);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
2.Mapper层
/**
* 保存记录
* @param subList
*/
void saveRecord(@Param("list") List<QualityFreezeOperationRecord> subList);
3.xml
<insert id="saveRecord">
INSERT INTO eplus_quality_freeze_operation_record
(id,
operation_id,
operation_type,
position_info,
production_batch,
operation_info,
frozen_status,
create_user,
create_dept,
create_time
) VALUES
<foreach collection="list" index="index" item="param" separator=",">
(
#{param.id},
#{param.operationId},
#{param.operationType},
#{param.positionInfo},
#{param.productionBatch},
#{param.operationInfo},
#{param.frozenStatus},
#{param.createUser},
#{param.createDept},
#{param.createTime}
)
</foreach>
</insert>
二。批量更新
1.方法
List<Long> list = new ArrayList<>(); // 待更新任务主键
Collections.addAll(list, 1646776293841166338l,1646776293841166339l);
this.baseMapper.updateFrozenStatus(表名,字段名,new Date(),list);
2.Mapper层
int updateFrozenStatus(@Param(value = "table") String table,
@Param(value = "status") Integer status,
@Param(value = "date") Date date,
@Param(value = "list") List<Long> list
);
3.xml
<update id="updateFrozenStatus">
update ${table}
set status= #{status},
update_time = #{date}
where id IN
<foreach collection="list" item="id" index="index" open="(" close=")" separator=",">
#{id}
</foreach>
</update>