二叉树结构菜单 - 操作

4347595-a01ed3c6b6285e2b.jpg
二叉树结构菜单
  • 添加:
参数: p_id,  p_lft,  p_rgt

(1) p_id > 0
  新增数据 lft = #{p_rgt},  rgt = #{p_rgt} + 1 ; 返回 id ;
  1. 所有 lft > #{p_rgt} 的数据,lft + 2 ;
  2. 所有 rgt >= #{p_rgt} and id != #{id} 的数据,rgt + 2 ;

(2) p_id == 0
  查询当前最大rgt:rgt
  添加数据:lft = #{rgt} + 1,  rgt = #{rgt} + 2
  • 删除:
参数:删除行的 pid, lft, rgt 

删除数据 lft >= #{lft} , rgt <= #{rgt} ;
1. 所有 lft > #{lft} 的数据,lft - {#{rgt} - #{lft} + 1} ,
2. 所有 rgt > #{rgt} 的数据,rgt - {#{rgt} - #{lft} + 1} ;    
  • 同级上移:
参数:当前级的 lft , rgt 

获取到同级上一个: where rgt = #{lft} - 1 ; 得到 pre_lft , pre_rgt ;
1. 所有 lft >= #{lft}  and rgt <= #{rgt} 的数据,获取到 id_List ;
            lft - ( #{pre_rgt} - #{pre_lft} + 1) 
            rgt - ( #{pre_rgt} - #{pre_lft} + 1)
2. 所有 lft >= #{pre_lft}  and rgt <= #{pre_rgt} 的数据,获取到 id_List ;
            lft + ( #{rgt} - #{lft} + 1) 
            rgt + ( #{rgt} - #{lft} + 1)
  • 同级下移:
参数:当前级的 lft , rgt 

获取到同级下一个: where lft = #{rgt} + 1 ; 得到 next_lft , next_rgt ;
1. 所有 lft >= #{lft}  and rgt <= #{rgt} 的数据,获取到 id_List ;
            lft + ( #{next_rgt} - #{next_lft} + 1) 
            rgt + ( #{next_rgt} - #{next_lft} + 1)
2. 所有 lft >= #{next_lft}  and rgt <= #{next_rgt} 的数据,获取到 id_List ;
            lft - ( #{rgt} - #{lft} + 1) 
            rgt - ( #{rgt} - #{lft} + 1)
posted @ 2018-03-06 12:13  游园拾忆  阅读(121)  评论(0编辑  收藏  举报