1、在循环里查询数据库
示例:
if (CollectionUtils.isNotEmpty(rentVO.getFileIdList())){
rentVO.getFileIdList().stream().forEach(fileId->{
FileInfo fileInfo=fileInfoService.getById(fileId);
AssertUtil.notNull(fileInfo,"fileinfo表中未找到相关文件");
fileInfo.setRelationId(rentVO.getId());
fileInfoService.updateById(fileInfo);
});
}
改进:
public boolean updateRelationId(Long relationId, List<Long> fileIds) {
LambdaUpdateWrapper<FileInfo> updateWrapper = Wrappers.lambdaUpdate();
//移除旧关系
updateWrapper.set(FileInfo::getRelationId, 0L);
updateWrapper.eq(FileInfo::getRelationId, relationId);
this.update(updateWrapper);
//更新关系
updateWrapper.clear();
updateWrapper.set(FileInfo::getRelationId, relationId);
updateWrapper.in(FileInfo::getId, fileIds);
return this.update(updateWrapper);
}
2、查询数据库某一列数据,返回列表
示例(效率低):
// 不高效,相当于select *之后再把某一字段列出来
landService.list().stream().map(p -> p.getCode()).collect(Collectors.toList())
改进:
// 高效,使用select code直接查询
landService.lambdaQuery().select(LandEntity::getCode).list().stream().map(p -> p.getCode()).collect(Collectors.toList())