1.实体类SysMenu:
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SysMenu {
@TableId(type = IdType.AUTO)
private Long id;
@TableField(value = "menu_name")
private String menuName;
@TableField(value = "menu_permission")
private String menuPermission;
@TableField(value = "menu_path")
private String menuPath;
@TableField(value = "menu_parent_id")
private Long menuParentId;
@TableField(value = "menu_type")
private int menuType;
@TableField(value = "order_num")
private int orderNum;
@TableField(value = "create_time")
private LocalDateTime createTime;
@TableField(value = "update_time")
private LocalDateTime updateTime;
@TableField(exist = false)
private List<SysMenu> menuList = new ArrayList<>();
}
2.sql语句MenuMapper.xml:
<select id="selectAll" resultType="com.qcby.demo1107.entity.SysMenu">
select * from sys_menu
</select>
3.mapper层MenuMapper:
public interface MenuMapper extends BaseMapper<SysMenu> {
List<SysMenu> selectAll();
}
4.Service层MenuService:
public interface MenuService extends IService<SysMenu> {
ResultJson menuTree();
}
Service的实现类ServiceImpl:
@Service
@Transactional
public class MenuServiceImpl extends ServiceImpl<MenuMapper, SysMenu> implements MenuService {
@Autowired
private MenuMapper menuMapper;
@Override
public ResultJson menuTree() {
List<SysMenu> menuList = menuMapper.selectAll();
List<SysMenu> firstMenuList = new ArrayList<>();
for (int i = 0; i < menuList.size(); i ++){
if (menuList.get(i).getMenuParentId() == 1){
firstMenuList.add(menuList.get(i));
}
}
//遍历一级菜单
for (int i = 0; i < firstMenuList.size(); i ++){
//遍历所有菜单
for (int j = 0; j < menuList.size(); j ++){
if (menuList.get(j).getMenuParentId() == firstMenuList.get(i).getId()){
firstMenuList.get(i).getMenuList().add(menuList.get(j));
}
}
}
return ResultJson.ok("生成", firstMenuList);
}
}
5.Controller层:
@RestController
@RequestMapping("menu")
public class MenuController {
@Autowired
private MenuService menuService;
@RequestMapping("menuTree")
public ResultJson menuTree(){
return menuService.menuTree();
}
}
测试:
成功!