最近遇到這麼乙個需求,要求對列表中的資料進行自定義排序操作,思前想後,決定通過上下移動來實現此功能。
實現思路:
1.在資料庫中對要進行排序那張表新增乙個sort欄位用於排序。
2.每當新增一條記錄時,sort的值都會在上一條的記錄上進行+1。即每次新增記錄時,先查出已存在的sort值最大的那條記錄,然後新增記錄的sort值為該記錄的sort的值+1。
springboot+mybatis**實現:
1.sql
select ifnull(max(sort),0) from classic_case
select
,from classic_case f
where f.sort < # order by f.sort desc limit 0,1
select
,from classic_case f
where f.sort > # order by f.sort asc limit 0,1
2.dao
/**
* @description:查詢當前最大的sort值
* @date: 17:44 2019-3-29
* @param:
* @return: int
*/integer selectmaxsort();
/*** 上移
* @param sort
* @return
*/classiccase moveup(integer sort);
/*** 下移
* @param sort
* @return
*/classiccase movedown(integer sort);
3.service
/**
* 新增記錄
* @param record
* @return
*/int insertselective(classiccase record);
/*** 上移
* @param classicid
* @return
*/void moveup(integer classicid);
/*** 下移
* @param classicid
*/void movedown(integer classicid);
@override
public int insertselective(classiccase record) else
system.out.println(record.getdetail());
}@override
public void moveup(integer classicid)
//交換兩條記錄的sort值
integer temp = classiccase.getsort();
classiccase.setsort(caseprev.getsort());
caseprev.setsort(temp);
//更新到資料庫
}@override
public void movedown(integer classicid)
//交換兩條記錄的sort值
integer temp = classiccase.getsort();
classiccase.setsort(casenext.getsort());
casenext.setsort(temp);
//更新到資料庫
}
4.controller
/**
* 更新排序
* @param sortstr 操作字元(down---下移,up---上移)
* @param classicid 案例id
* @return
*/public baseresponse updatesort(string sortstr, integer classicid) else if (sortstr.equals("up"))
custom.success(constant.success,constant.success_code);
} catch (exception e)
return custom.build();
}
這便是該功能的簡單實現,我個人認識淺薄,有更好的方法還望各位大神指教。 上移下移實現邏輯
在開發中經常有上移 下移的操作,猛的一想感覺邏輯還很複雜,其實很簡單主要有以下步驟 首先頁面上的展示列表在後台查詢的時候要根據某個字段排序,這樣展示的資料才是有序的,才可以實現此功能。新增上移或者下移的時候需要把當前資料的id和目標id傳到後台 前台 each json,function index...
Flex中List實現上移下移功能
我們在html中可以用js實現selecte框中內容的上移下移。昨天在專案中需要用flex來實現這個功能。研究了一下 不難。下面是具體實現 xmlns s library xmlns mx library width 100 height 100 0 private function down vo...
專案 小程式陣列操作 上移下移編輯刪除
編輯 取出指定下標並跳轉到編輯頁面 toremake function else if qtype 多選 else 刪除指定下標的元素,重新儲存陣列,並重新整理頁面 todelete function 上移並重新整理頁面和下移並重新整理頁面 tochange function else tochan...