今天做後台管理系統時候,要實現上移和下移 置頂的功能,記錄一下。
首先呢,先建立一張表
create
table
`a` (
`id`
int(11
)not
null
auto_increment
,`name`
varchar
(255
)not
null
,`age`
int(11
)not
null
,`gender`
varchar
(255
)not
null
,`psw`
varchar
(255
)not
null
,`seq`
int(11
)not
null
,primary
key(
`id`))
engine
=innodb auto_increment=7
default
charset
=utf8;
insert
into
`a`(
`id`
,`name`
,`age`
,`gender`
,`psw`
,`seq`
)values(1
,'zsan',30
,'f'
,'123456',1
);insert
into
`a`(
`id`
,`name`
,`age`
,`gender`
,`psw`
,`seq`
)values(2
,'lisi',31
,'f'
,'123456',2
);insert
into
`a`(
`id`
,`name`
,`age`
,`gender`
,`psw`
,`seq`
)values(3
,'wangwu',32
,'m'
,'123456',3
);insert
into
`a`(
`id`
,`name`
,`age`
,`gender`
,`psw`
,`seq`
)values(4
,'zhaoliu',33
,'m'
,'123456',4
);insert
into
`a`(
`id`
,`name`
,`age`
,`gender`
,`psw`
,`seq`
)values(5
,'baiqi',34
,'m'
,'123456',5
);insert
into
`a`(
`id`
,`name`
,`age`
,`gender`
,`psw`
,`seq`
)values(6
,'hongba',35
,'f'
,'123456',6
);
欄位中有用的是id和seq,id作為主鍵標識一條資料,seq標記這條資料的順序,也是在上移、下移以及置頂操作中,order by的字段。
獲取本條資料和上一條資料內容,將兩條資料的seq作交換
將原資料庫中id為2和3的資料內容交換,從前端傳入本條資料的id,即3,獲取本條資料內容,將獲取到的內容存入pojo3
select *
from a where id=
3
獲取上一條資料內容(這裡pojo3.getseq()的值為4,各位小夥伴執行sql語句時,自行替換),將獲取到的內容存入pojo2。
select
*from a where
( seq <
pojo3
.getseq()
or seq=
(select
min(seq)
from a )
)order
by seq desc limit 1
交換pojo2和pojo3的順序。
update a set seq=
pojo3的seq值 where id=2;
update a set seq=
pojo2的seq值 where id=
3;
獲取本條資料和下一條資料內容,將兩條資料的seq作交換
將原資料庫中id為3和4的資料內容交換,從前端傳入本條資料的id,即3,獲取本條資料內容,將獲取到的內容存入pojo3
select *
from a where id=
3
獲取下一條資料內容(這裡pojo3.getseq()的值為3,各位小夥伴執行sql語句時,自行替換),將獲取到的內容存入pojo4。
select
*from a where
( seq >
pojo3
.getseq()
or seq=
(select
max(seq)
from a )
)order
by seq asc limit 1
交換pojo3和pojo4的順序。
update a set seq=
pojo4的seq值 where id=3;
update a set seq=
pojo3的seq值 where id=
4;
需要獲取需要置頂的資料pojo,將表中seq欄位小於pojo順序的所有資料的seq增加1,再將pojo的seq設定為1,最後在查詢表時,按seq增序排列,就能看到置頂的效果。
上sql**:
-- 置頂id=
4,seq=
4的資料
update a set seq = seq+
1 where seq<4;
update a set seq=
1 where id=4;
select *
from a order
by seq asc
c 子窗體的上移 下移 置頂和置底的方法
c 子窗體的上移 下移 置頂和置底的方法,涉及到控制項的z軸次序屬性。例如,動態生成的子窗體,加入到panel控制項中,當第乙個加入panel控制集合的index索引值為0。新增加乙個視窗,會出現在最上面,index索引值為0,在後面的窗體index索引值為index 1。使用窗體的sendtoba...
java實現列表的上下移動和置頂操作
一 上下移動 1 在資料庫表中新新增一列名為sort,初始值與各條資料的id相同,初始list排序按照sort的值排序。2 思路是向上移動的時候,查詢出當前資料的上一條資料的sort值,兩者交換sort值,同理向下移動的時候,查詢出下一條資料的sort值,兩者交換。3 ssm框架中的sql及 實現 ...
java實現列表的上下移動和置頂操作
一 上下移動 1 在資料庫表中新新增一列名為sort,初始值與各條資料的id相同,初始list排序按照sort的值排序。3 ssm框架中的sql及 實現 2 依次交換sort資料 for int i 0 ifor usertest e list public static void swap2 li...