表转换为map树
Controller
@RestController
@RequestMapping("/menus")
public class MenuController {
@Autowired
private IMenuService menuService;
/**
* 获取菜单
*
* @return menu
*/
@GetMapping()
public List<Menu> listMenu() {
List<Menu> menu = menuService.menu();
return menu;
}
}
mapper
@Mapper
public interface MenuMapper {
List<Menu> menu();
}
Pojo
@Data
public class Menu {
private int id;
private int pid;
private String name;
private String path;
private String icon;
private List<Menu> children;
}
interface
public interface IMenuService {
List<Menu> menu();
}
Service
@Service
public class MenuServiceImpl implements IMenuService {
@Autowired
private MenuMapper menuMapper;
/**
* 获取菜单数据
*
* @return
*/
public List<Menu> menu() {
List<Menu> list = menuMapper.menu();
//获取为父节点的Menu,并且赋值其子节点
for (Menu rg : list) {
if (rg.getPid() == 1)
rg.setChildren(getChild(rg, list));
else
rg.setChildren(null);
}
//只返回ParentId为0,代表其为审查指南
List<Menu> returnList = new ArrayList<>();
for (Menu rg : list)
if (rg.getPid() == 1)
returnList.add(rg);
return returnList;
}
public List<Menu> getChild(Menu root, List<Menu> all) {
// 创建一个集合,存储父节点的子节点
List<Menu> childs = new ArrayList<>();
//将 集合中父id == 当前父节点id,即代表该rg是当前父节点的子节点之一
for (Menu rg : all) {
if (rg.getPid() == root.getId())
childs.add(rg);
}
return childs;
}
}
xml
<mapper namespace="com.learn.mapper.MenuMapper">
<select id="menu" resultType="com.learn.model.Menu">
select *
from menu_tbl;
</select>
</mapper>
本文来自博客园,作者:杨业壮,转载请注明原文链接:https://www.cnblogs.com/yang-yz/p/17534872.html