设置字段index,表示元素的排序信息规定元素从0开始递增,
如 0.1.2.3.4.5.6…100
逻辑删除数据不考虑(不变),物理删除数据(不变 如 1.4.5.6…100 2.3被删除也没事)
例如:数据示例
nameD 3
nameC 2
nameB 1
nameA 0
1)添加数据 新增数据时,序号为当前元素数据总量
select count(*) from table;
例如:数据示例 新增 nameE
nameE 4
nameD 3
nameC 2
nameB 1
nameA 0
2)删除数据 删除数据时,不改变排序值。
例如:数据示例 删除 nameB
nameE 4
nameD 3
nameC 2
nameB 1 等于#{值} 不变1
nameA 0
3)恢复数据 恢复数据时,不改变排序值
例如:数据示例 恢复 nameB
nameE 4
nameD 3
nameC 2
nameB 1 不变1
nameA 0
4)修改位置 前端发送一个偏移量,有正有负,比如从第五移动到第三,那么偏移量就是-2,那么移动的元素的index加上偏移量,然后将移动元素的原位置的偏移量范围内的元素进行加减。
Update table set index=index-#{偏移量} where ID=#{ID}
Update table set index=index+1 where index >= #{值} and index<#{值} 向下移动
或着
Update table set index=index-1 where index > #{值} and index =<#{值} 向上移动
例如:1.数据示例 将nameB向下移动 到 nameC 的下方 也就是从第一位移动到第四位 偏移量为 3 第一位和第四位区间的值都加一
Update table set index=index+1 where index >= #{1} and index<#{4} 向下移动
nameB 4 -偏移量等于 1
nameE 3 区间的值都加一等于 4
nameD 2 区间的值都加一等于 3
nameC 1 区间的值都加一等于 2
nameA 0 不再区间内值不变 0
例如:数2.据示例 将nameA向上移动 到 nameE 的上方 也就是从第五位移动到第二位 偏移量为 -3 第二位和第五位区间的值都减一
Update table set index=index-1 where index > #{0} and index =<#{3} 向上移动
nameB 4 不再区间内值不变 4
nameE 3 区间的值都减一等于 2
nameD 2 区间的值都减一等于 1
nameC 1 区间的值都减一等于 0
nameA 0 -偏移量等于 3



