优化代码:/** * 批量删除仪器 * * @param ids 需要删除的仪器主键 * @return 结果 */ @Override @Transactional public int deleteGsApparatusByIds(Long[] ids) { List<GsApparatusExample> list = gsApparatusExampleMapper.selectByApparatusIds(ids); if (!CollectionUtils.isEmpty(list)) { gsApparatusExampleMapper.deleteBatchIds(list); } List<GsApparatusIndex> listIndex = gsApparatusIndexMapper.selectByApparatusIds(ids); if (!CollectionUtils.isEmpty(listIndex)) { for (GsApparatusIndex index : listIndex) { Long id = index.getId(); gsArticleMapper.deleteGsArticleByIndexId(id); } gsApparatusIndexMapper.deleteBatchIds(listIndex); } return gsApparatusMapper.deleteGsApparatusByIds(ids); }
时间: 2024-04-15 15:31:04 浏览: 93
这段代码中可以进行一些优化的地方如下:
1. 使用批量删除方法:可以将删除操作改为使用批量删除的方式,这样可以减少与数据库的交互次数,提高效率。可以使用`gsApparatusMapper.deleteBatchIds(ids)`方法来实现批量删除。
2. 合并多个查询:在删除仪器之前,代码中进行了多次查询操作。可以将这些查询合并为一个查询,以减少数据库查询次数。可以使用`IN`语句来查询多个id对应的记录。
优化后的代码如下所示:
```java
@Override
@Transactional
public int deleteGsApparatusByIds(Long[] ids) {
if (ids.length == 0) {
return 0;
}
// 批量删除仪器
gsApparatusMapper.deleteBatchIds(Arrays.asList(ids));
// 查询需要删除的索引
List<GsApparatusIndex> listIndex = gsApparatusIndexMapper.selectByApparatusIds(ids);
if (!CollectionUtils.isEmpty(listIndex)) {
// 删除索引对应的文章
List<Long> indexIds = listIndex.stream().map(GsApparatusIndex::getId).collect(Collectors.toList());
gsArticleMapper.deleteBatchIds(indexIds);
// 批量删除索引
gsApparatusIndexMapper.deleteBatchIds(listIndex);
}
return ids.length;
}
```
这样做的好处是减少了与数据库的交互次数,并且通过批量操作可以提高代码的执行效率。
阅读全文