设计思路
前端将同级下拖拽后,排好序的所有数据id集合传到后台接口,后台根据前端传入的id列表的顺序修改数据库的排序字段。
controller层代码
@ApiOperation(value = "排序 @author Tarzan Liu")
@PostMapping("sort")
public R<Boolean> sort(@RequestBody List<Long> ids) {
return R.status(featureSetService.sort(ids));
}
Service层代码
/**
* 方法描述: 排序
*
* @param ids
* @return {@link boolean}
* @throws
* @author tarzan
* @date 2022年01月28日 17:56:25
*/
public boolean sort(List<Long> ids) {
List<FeatureSetEntity> updateList= new ArrayList<>();
for (int i = 0; i < ids.size(); i++) {
updateList.add(FeatureSetEntity.builder().id(ids.get(i)).sort(i).build());
}
return updateBatchById(updateList);
}
方法参数接受排好序的所有数据的id集合,方法内部实现按照传入的id列表的顺序修改数据库的排序字段。updateBatchById()是用的mybatis plus 内部的批量修改方法!
maper类和实体类代码是常规代码不展示了!
相关知识
Java 中的 List 是一个接口,它继承自 Collection 接口,并且是 Collection Framework 中最常用的数据结构之一。List 接口提供了有序、可重复的元素集合,可以动态地调整大小。在 Java 中,List 有多种实现类,如 ArrayList、LinkedList 和 Vector 等,每种实现类都适用于不同的使用场景。下面对 Java 中的 List 接口及其主要实现类进行详细解释。
-
List 接口 List 接口是 java.util 包中定义的一个接口,它继承自 Collection 接口。List 接口以有序、可重复的方式存储元素,提供了添加、删除、查询和修改元素的方法。List 接口还提供了通过索引访问元素的方法,以及获取子列表、反转列表等功能。
-
ArrayList 类 ArrayList 是 List 接口的主要实现类之一,它基于数组实现。ArrayList 具有动态调整大小的能力,可以根据需要自动扩展或缩小容量。ArrayList 支持快速访问和随机访问元素,但插入和删除元素可能会涉及数组的移动操作。
-
LinkedList 类 LinkedList 是 List 接口的另一个实现类,它基于链表实现。LinkedList 通过节点之间的链接来存储元素,每个节点包含当前元素和指向前一个和后一个节点的引用。LinkedList 支持快速插入和删除元素,但随机访问元素需要遍历链表。
-
Vector 类 Vector 是一个古老的实现类,它也是 List 接口的实现类之一。Vector 是线程安全的,支持动态调整大小,并且具有与 ArrayList 类似的功能。然而,由于其同步性质,Vector 的性能相对较差,通常在多线程环境下使用。
-
Stack 类 Stack 是 Vector 类的子类,它实现了后进先出(LIFO)的堆栈数据结构。Stack 定义了压栈和弹栈等操作,通过 push() 方法将元素入栈,通过 pop() 方法将元素出栈。Stack 在一些特定场景下非常有用,如括号匹配、逆波兰表达式求值等。
-
CopyOnWriteArrayList 类 CopyOnWriteArrayList 是一个并发安全的列表类,它实现了 List 接口。CopyOnWriteArrayList 使用复制数组的方式来实现并发访问的安全性,每次进行修改时都会创建一个新的数组。这意味着写操作可能会比较耗时,但读操作不会受到影响。
除了上述的主要 List 实现类之外,Java 还提供了其他一些 List 实现类,如带有排序功能的 TreeSet、支持键值对存储的 LinkedHashMap 等。
总结: List 是 Java Collection Framework 中的一个接口,它提供了有序、可重复的元素集合。Java 提供了多种 List 的实现类,包括 ArrayList、LinkedList、Vector、Stack 和 CopyOnWriteArrayList 等。ArrayList 基于数组实现,支持快速访问和随机访问,适用于读取操作频繁的场景;LinkedList 基于链表实现,支持快速插入和删除,适用于插入和删除操作频繁的场景;Vector 是线程安全的,但性能较差;Stack 实现了后进先出的堆栈数据结构;CopyOnWriteArrayList 是并发安全的列表实现类。根据具体的需求和使用场景,选择合适的 List 实现类可以提高程序性能和效率
如果你有更好的实现办法,欢迎交流 微信号:vxhqqh