根据id查询所有子节点/父节点,mysql 以及ssm前后台处理流程
1、所示案例数据表结构设计如下所示:
2、案例数据如下所示:
3、mysql查询语句可以查询出父级目录信息:
注意:自己的数据表表名称,切记手动修改,字段名称(特别注意id,parent_id字段名称,不然肯定查询不出来的)。
SELECT T2.*
FROM (
SELECT
@r AS _id,
(SELECT @r := parent_id FROM catelog WHERE id = _id) AS parent_id,
@l := @l + AS lvl
FROM
(SELECT @r := , @l := ) vars,
catelog h
WHERE @r <> ) T1
JOIN catelog T2
ON T1._id = T2.id
ORDER BY T1.lvl DESC
查询实例如下所示:
4、然后使用ajax来传递id的值,最后展示出来查询出来的名称即可:
//查询目录
function findByDirectory(id){
var url = 'cateLogAction!findParentMessageById.action?id='+id;
$.ajax({
type : 'get',
url : url,
dataType : 'json',
global : false,
async : true,
success : function(data) {
//alert(data.parentMessage);//打印测试显示内容
var catelogName = [];
for(var i=;i<data.parentMessage.length;i++){
//alert(data.parentMessage[i].name);
//如果是最后的子目录,后面不加/
if(i == data.parentMessage.length - ){
var name = data.parentMessage[i].name
}else{
var name = data.parentMessage[i].name + "/";
}
catelogName += name;
}
//使用id设置值
$("#directory").text(catelogName);
}
});
}
由于使用的框架ssm是struts,spring,mybatis(ibatis)框架,过程调用简单,省略,只书写了核心部分。
<select id="findParentMessageById" resultMap="cateLogInstanceMap">
<![CDATA[
SELECT T2.*
FROM (
SELECT
@r AS _id,
(SELECT @r := parent_id FROM catelog WHERE id = _id) AS parent_id,
@l := @l + AS lvl
FROM
(SELECT @r := , @l := ) vars,
catelog h
WHERE @r <> ) T1
JOIN catelog T2
ON T1._id = T2.id
ORDER BY T1.lvl DESC
]]>
</select>
5、由于我需要的是这种格式的展示形式,所以,展示如下所示,获取其他值,自行将获取到前台的数据进行拼接即可。
待续......
根据id查询所有子节点/父节点,mysql 以及ssm前后台处理流程的更多相关文章
- EasyUI tree 选中父节点子节点全部选中,选中子节点父节点不选中
需求:EasyUI tree 选中父节点子节点全部选中,选中子节点父节点不选中 效果: /** * 给树增加onCheck事件,首先使用cascadeCheck:false属性禁止全选, ...
- js|jq获取兄弟节点,父节点,子节点
08.19自我总结 js|jq获取兄弟节点,父节点,子节点 一.js var parent = test.parentNode; // 父节点 var chils = test.childNodes; ...
- CSS/Xpath 选择器 第几个子节点/父节点/兄弟节点
0.参考 1.初始化 In [325]: from scrapy import Selector In [326]: text=""" ...: <div> ...
- JavaScript通过父节点ID递归生成JSON树
JavaScript通过父节点ID递归生成JSON树: · 实现思路:通过递归实现(第一次递归的时候查询出所有的父节点,然后通过当前父节点id不断地去查询所有子节点,直到递归完毕返回) · 代码示 ...
- vue_elementUI_ tree树形控件 获取选中的父节点ID
el-tree 的 this.$refs.tree.getCheckedKeys() 只可以获取选中的id 无法获取选中的父节点ID想要获取选中父节点的id;需要如下操作1. 找到工程下的node_m ...
- Z-tree 统计每一父节点的叶子节点数(看这一篇就够了)
最近刚走出校园的我找到了第一份工作,在入职考核中就遇见了一道Z-tree的试题 这道题目本身是不难的,但是我第一次接触这个插件而且还把解决问题的方向搞错了,弄的我好几天都很难受. 弄得我都开始怀疑人生 ...
- 树形下拉框ztree、获取ztree所有父节点,ztree的相关方法
参考:jQuery树形控件zTree使用小结 需求 添加.修改的终端需要选择组织,组织是多级架构(树状图显示). 思路 1.因为下拉框需要树状图显示,所以排除使用select做下拉框,改用input ...
- cocos子节点转父节点坐标 原理浅析(局部坐标转世界坐标同理)
在CCNode的类中,有一个得到 一个节点坐标系转换父亲坐标系的一个矩阵,节点内坐标乘以这个矩阵,就可以转换为在节点父节点中的坐标,方法名为: Mat4& Node::getNodeToPar ...
- sql递归查询 根据Id查所有子结点
Declare @Id Int Set @Id = 0; ---在此修改父节点 With RootNodeCTE(D_ID,D_FatherID,D_Name,lv) As ( Select D_ID ...
随机推荐
- Path Sum I && II & III
Path Sum I Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that ad ...
- HDU - 1160 FatMouse's Speed 动态规划LIS,路径还原与nlogn优化
HDU - 1160 给一些老鼠的体重和速度 要求对老鼠进行重排列,并找出一个最长的子序列,体重严格递增,速度严格递减 并输出一种方案 原题等于定义一个偏序关系 $(a,b)<(c.d)$ 当且 ...
- 004_为什么不推荐APP使用SSL-PINNING
背景 之前工作的经历,前面技术团队的APP使用了SSL-PINNING,服务器SSL证书到期前,测试环境更换证书,在更换配置OK后,发现APP停止服务了.所有的请求全部都失败. 后来查到是APP使用了 ...
- win10安装MarkdownPad 2报错This view has crashed的处理及md简单语法
# #开头是段落的意思 不带#号是普通内容 # 下划线的写法是两个#号 ## # 列表的写法,以*号开头 * spring * summer * autumn * winter # 以竖线开头 > ...
- Django 笔记(四)模板标签 ~ 自定义过滤器
模板标签: 标签在渲染的过程中提供任意的逻辑 语法: 由{% ... %} 和 {% end... %} 常用标签: with:类似取别名 模版继承: Django模版引擎中最强大也是最复杂的部分就是 ...
- MongoDB、Hbase、Redis等NoSQL优劣势、应用场景
NoSQL的四大种类 NoSQL数据库在整个数据库领域的江湖地位已经不言而喻.在大数据时代,虽然RDBMS很优秀,但是面对快速增长的数据规模和日渐复杂的数据模型,RDBMS渐渐力不从心,无法应对很多数 ...
- iOS ReplayKit 录屏 框架的使用
在需要使用录屏的 地方 引入 头文件 #import <ReplayKit/ReplayKit.h> 添加代理 RPPreviewViewControllerDelegate 因为 iOS ...
- STM32L476应用开发之六:电池SOC检测
便携式设备由于使用需求而配备了锂电池,但使用过程中需要掌握电源的状态才能保证设备正常运行.而且在电池充放电的过程中,监控电池的充放电状态也是保证设备安全的需要. 1.硬件设计 电池SOC检测是一个难题 ...
- LeetCode(80):删除排序数组中的重复项 II
Medium! 题目描述: 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额 ...
- 【ES】学习11-多桶排序
聚合结果的排序 默认:桶会根据 doc_count 降序排列. 内置排序: 设置按doc_count升序排序:注意order,_count GET /cars/transactions/_search ...