• 根据id查询所有子节点/父节点,mysql 以及ssm前后台处理流程


    1、所示案例数据表结构设计如下所示:

     

    2、案例数据如下所示:

     

    3、mysql查询语句可以查询出父级目录信息:

    注意:自己的数据表表名称,切记手动修改,字段名称(特别注意id,parent_id字段名称,不然肯定查询不出来的)。

     1 SELECT T2.*
     2 FROM ( 
     3         SELECT 
     4                 @r AS _id, 
     5                 (SELECT @r := parent_id FROM catelog WHERE id = _id) AS parent_id, 
     6                 @l := @l + 1 AS lvl 
     7         FROM 
     8                 (SELECT @r := 4, @l := 0) vars,
     9                 catelog h 
    10         WHERE @r <> 0) T1 
    11 JOIN catelog T2 
    12 ON T1._id = T2.id 
    13 ORDER BY T1.lvl DESC 

     查询实例如下所示:

     

     4、然后使用ajax来传递id的值,最后展示出来查询出来的名称即可:

     1 //查询目录
     2 function findByDirectory(id){
     3     var url = 'cateLogAction!findParentMessageById.action?id='+id;
     4     $.ajax({
     5         type : 'get',
     6         url : url,
     7         dataType : 'json',
     8         global : false,
     9         async : true,
    10         success : function(data) {
    11             //alert(data.parentMessage);//打印测试显示内容
    12             var catelogName = [];
    13             for(var i=0;i<data.parentMessage.length;i++){
    14                 //alert(data.parentMessage[i].name);
    15                 //如果是最后的子目录,后面不加/
    16                 if(i == data.parentMessage.length -1 ){
    17                     var name = data.parentMessage[i].name
    18                 }else{
    19                     var name = data.parentMessage[i].name + "/";
    20                 }
    21                 catelogName += name;
    22             }
    23             //使用id设置值
    24             $("#directory").text(catelogName);
    25         }
    26     });
    27 }

    由于使用的框架ssm是struts,spring,mybatis(ibatis)框架,过程调用简单,省略,只书写了核心部分。

     1 <select id="findParentMessageById" resultMap="cateLogInstanceMap">
     2 <![CDATA[
     3     SELECT T2.*
     4     FROM ( 
     5             SELECT 
     6                     @r AS _id, 
     7                     (SELECT @r := parent_id FROM catelog WHERE id = _id) AS parent_id, 
     8                     @l := @l + 1 AS lvl 
     9             FROM 
    10                     (SELECT @r := 4, @l := 0) vars,
    11                     catelog h 
    12             WHERE @r <> 0) T1 
    13     JOIN catelog T2 
    14     ON T1._id = T2.id 
    15     ORDER BY T1.lvl DESC 
    16 ]]>
    17 </select>

    5、由于我需要的是这种格式的展示形式,所以,展示如下所示,获取其他值,自行将获取到前台的数据进行拼接即可。

    待续......

  • 相关阅读:
    非同名数据库导入sql
    mybatis中的异常
    使用MyBatis时为什么Dao层不需要@Repository
    springboot项目启动后执行一段程序的方式
    构建SpringBoot项目
    springboot项目添加webapp目录
    springboot项目启动异常
    使用restTemplate出现的异常
    Spring中Bean的属性赋值@Value()---使用类配置的方式
    使用BeanUtils复制Java对象
  • 原文地址:https://www.cnblogs.com/biehongli/p/9391757.html
Copyright © 2020-2023  润新知