diff --git a/src/main/java/com/heai/modules/sys/controller/SysMenuController.java b/src/main/java/com/heai/modules/sys/controller/SysMenuController.java index 49017c1..77ebcc9 100644 --- a/src/main/java/com/heai/modules/sys/controller/SysMenuController.java +++ b/src/main/java/com/heai/modules/sys/controller/SysMenuController.java @@ -18,7 +18,9 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Set; /** @@ -52,15 +54,17 @@ public class SysMenuController extends AbstractController { @GetMapping("/list") @RequiresPermissions("sys:menu:list") public List list(){ - // List menuList = sysMenuService.list(); - List menuList =sysMenuService.lambdaQuery().orderBy(true,true,SysMenuEntity::getOrderNum).list(); - for(SysMenuEntity sysMenuEntity : menuList){ - SysMenuEntity parentMenuEntity = sysMenuService.getById(sysMenuEntity.getParentId()); - if(parentMenuEntity != null){ - sysMenuEntity.setParentName(parentMenuEntity.getName()); - } + // 一次查询后在内存中补父级名称,避免N+1数据库访问 - rqrq + List menuList = sysMenuService.lambdaQuery() + .orderBy(true, true, SysMenuEntity::getOrderNum) + .list(); + Map menuNameMap = new HashMap<>(menuList.size()); + for (SysMenuEntity menuEntity : menuList) { + menuNameMap.put(menuEntity.getMenuId(), menuEntity.getName()); + } + for (SysMenuEntity menuEntity : menuList) { + menuEntity.setParentName(menuNameMap.get(menuEntity.getParentId())); } - return menuList; }