1. 上移:使用MySQL的ORDER BY子句中的ASC或DESC关键字实现排序,然后使用LIMIT子句限制查询结果集的大小,最后使用OFFSET子句将指定位置的元素移动到列表的开头。
<update id="moveUp" parameterType="int">
UPDATE tableName
SET sort = sort - 1
WHERE sort > #{
id}
ORDER BY sort ASC
LIMIT 1
</update>
其中,#{id}为要上移的元素的排序值。
2. 下移:与上移类似,只需要将ORDER BY子句中的ASC改为DESC即可。
<update id="moveDown" parameterType="int">
UPDATE tableName
SET sort = sort + 1
WHERE sort < #{
id}
ORDER BY sort DESC
LIMIT 1
</update>
其中,#{id}为要下移的元素的排序值。
3. 置顶:同样使用ORDER BY子句中的ASC或DESC关键字实现排序,然后使用LIMIT子句限制查询结果集的大小,并将OFFSET子句设置为0即可。
<update id="moveTop" parameterType="int">
UPDATE tableName
SET sort = sort - 1
WHERE sort < #{
id}
ORDER BY sort ASC
LIMIT 1
</update>
其中,#{id}为要置顶的元素的排序值。
4. 置底:使用MySQL的ORDER BY子句中的DESC关键字实现排序,然后使用LIMIT子句限制查询结果集的大小,最后使用OFFSET子句将指定位置的元素移动到列表的末尾。
<update id="moveBottom" parameterType="int">
UPDATE tableName
SET sort = sort + 1
WHERE sort > #{
id}
ORDER BY sort DESC
LIMIT 1
</update>
其中,#{id}为要置底的元素的排序值。