推荐阅读
AI文本 OCR识别最佳实践
AI Gamma一键生成PPT工具直达链接
玩转cloud Studio 在线编码神器
玩转 GPU AI绘画、AI讲话、翻译,GPU点亮AI想象空间
资源分享
史上最全文档AI绘画stablediffusion资料分享
AI绘画关于SD,MJ,GPT,SDXL百科全书
「java、python面试题」来自UC网盘app分享,打开手机app,额外获得1T空间
https://drive.uc.cn/s/2aeb6c2dcedd4
AIGC资料包
https://drive.uc.cn/s/6077fc42116d4
https://pan.xunlei.com/s/VN_qC7kwpKFgKLto4KgP4Do_A1?pwd=7kbv#
以layui侧边栏菜单为例,实现java以json形式返回给前端侧边栏菜单
前端很常见的侧边栏菜单展示,但是前端有些控件的格式有自己的风格,只要返回标准json就可以进行转换
从数据库结构开始
常用pid=o或者=null的时候为一级菜单,pid=id的为二级菜单
初步逻辑是
// 采用递归算法实现许可数据查询
* 1) 方法自己调用自己
* 2) 方法一定要有跳出的逻辑
* 3) 方法在调用自身时,传递的参数需要有规律
递归算法所体现的“重复”一般有三个要求
(1) 每次调用在规模上都有所缩小(通常是减半);
(2) 相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出就作为后一次的输入);
(3) 在问题的规模极小时必须用直接给出解答而不再进行递归调用,
因而每次递归调用都是有条件的(以规模未达到直接解答的大小为条件),
无条件递归调用将会成为死循环而不能正常结束。
方法一:
// 读取许可数据
//全部数据
List<Permission> roots = permissionService.queryRootPermission();
for ( Permission root : roots ) {
// 查询子节点
List<Permission> childPermissions = permissionService.queryChildPermissions(root.getId());
// 查询子节点的子节点
for ( Permission child : childPermissions ) {
List<Permission> childChildPermissions = permissionService.queryChildPermissions(child.getId());
child.setChildren(childChildPermissions);
}
// 组合父子节点的关系
root.setChildren(childPermissions);
}
方法二
Map<Integer, Permission> permissionMap = new HashMap<Integer, Permission>();
for ( Permission permission : permissions ) {
permissionMap.put(permission.getId(), permission);
}
for ( Permission permission : permissions ) {
// 子节点
Permission child = permission;
if ( child.getPid() == 0 ) {
roots.add(permission);
} else {
// 父节点
Permission parent = permissionMap.get(child.getPid());
// 组合父子节点的关系
parent.getChildren().add(child);
}
}
对于前端特殊格式的json,可以根据需求进行json格式的重组
方法三: