有时候总是要用到排序,一下总结了两种排序的算法。
(待排序的实体对象有有个序号字段)
1、把一对象排在目标对象之上;可以跨级排序。排序之后目标对象的序号总是排在被排序的对象之后。
// 目标序号
Integer intMuBiaoXuHao = mubiaoYh.getYhXh();
TYh tyh = tyhDAO.findById(myh.getYhId());//待排序的对象
String JPQL_JIA = "update TYh model set model.yhXh = model.yhXh + 1 where model.yhXh >= ? and model.tbmByyhBmid.classId = " + myh.getYhBmid();
String JPQL_JIAN = "update TYh model set model.yhXh = model.yhXh - 1 where model.yhXh >= ? and model.tbmByyhBmid.classId = " + tyh.getTbmByyhBmid().getClassId();
if (intMuBiaoXuHao - 1 > tyh.getYhXh() && myh.getYhBmid().equals(tyh.getTbmByyhBmid().getClassId())) {
tyhDAO.executeByJPQL(JPQL_JIA, intMuBiaoXuHao);
tyhDAO.executeByJPQL(JPQL_JIAN, tyh.getYhXh());
myh.setYhXh(intMuBiaoXuHao - 1);
} else if (intMuBiaoXuHao < tyh.getYhXh() || !myh.getYhBmid().equals(tyh.getTbmByyhBmid().getClassId())) {
tyhDAO.executeByJPQL(JPQL_JIAN, tyh.getYhXh());
tyhDAO.executeByJPQL(JPQL_JIA, intMuBiaoXuHao);
myh.setYhXh(intMuBiaoXuHao);
}tyhDAO.update(tyh);
我采用的是spring和jap做的,此处只介绍算法思路。配置就免了。
2、也就是很普通的替换排序,一个对象替换了另一个对象的位置,当目标序号>原始序号,小于等于目标序号的对象序号都-1,当目标序号<原始序号,大于等于目标序号的对象序号都+1。代码:
Integer intMuBiaoXuHao = 0;
TXx txx = txxDAO.findById(xxId);
TXx txxnew = txxDAO.findById(xxNewId);//被替换的目标选项
intMuBiaoXuHao = txxnew.getXxXh();//新序号,目标序号
String JPQL_JIA = "update TXx model set model.xxXh = model.xxXh + 1 where model.xxXh >= ? and model.xxLx ='"+txx.getXxLx()+"'";
String JPQL_JIAN = "update TXx model set model.xxXh = model.xxXh - 1 where model.xxXh >= ? and model.xxLx ='"+txx.getXxLx()+"'";
if (intMuBiaoXuHao > txx.getXxXh() ) {//目标序号大于原始序号
txxDAO.executeByJPQL(JPQL_JIAN, txx.getXxXh());
txxDAO.executeByJPQL(JPQL_JIA, intMuBiaoXuHao);
} else if (intMuBiaoXuHao < txx.getXxXh()) {//目标序号小于原始序号
txxDAO.executeByJPQL(JPQL_JIA, intMuBiaoXuHao);
txxDAO.executeByJPQL(JPQL_JIAN, txx.getXxXh()+1);
}
txx.setXxXh(intMuBiaoXuHao);
txxDAO.update(txx);
分享到:
相关推荐
们需要在后端处理拖拽事件,...理解这些原理后,无论是JavaFX还是Swing,甚至是其他平台的UI框架,都能灵活地实现拖拽排序功能。通过这个功能,我们可以提高用户的交互体验,让他们能更直观、便捷地调整列表项的顺序。
Web 中拖拽排序和 Java 后台交互实现方法示例 本文主要介绍了 Web 中拖拽排序和 Java 后台交互实现的相关知识点,通过示例代码详细介绍了如何实现拖拽排序和 Java 后台交互。 一、业务需求 在 Web 中,为了实现...
"实现table表格可按行拖拽,按列排序,并可以保存排序后的结果"是一个常见的需求,尤其适用于数据展示和管理的场景。这里我们将详细探讨如何利用jQuery、jQuery.tablesorter和jQuery.tablednd_0_5这三个JavaScript库...
在`methods`选项中定义`handleSuccess`和`handleChange`方法,分别处理图片上传成功和拖动排序后的逻辑。`handleChange`方法接收新的排序数组并更新`imageList`。 8. **样式调整** 使用CSS调整组件样式,确保图片...
在React项目中,拖拽排序是一项常见的交互需求,可以提供用户友好的界面体验。React DND(Drag and Drop)库是实现这一功能的利器。它允许开发者轻松地将拖放功能集成到React组件中,无需深入理解底层浏览器事件。...
总的来说,"移动端列表长按上下拖动排序"是一项利用HTML5和触控事件增强用户体验的技术,涉及到前端开发中的事件处理、DOM操作、数据同步等多个方面。通过理解并实现这样的功能,开发者可以提升其在移动端交互设计和...
在网页开发中,实现表格列的自由拖动排序是一个增强用户体验的重要特性。这款"表格列自由拖动排序js代码"提供了这样一个功能,允许用户通过单击并长按表格的列头来自由移动列的位置,从而根据需要调整表格的布局。...
通过上述知识点的介绍,我们可以了解到实现后台列表表格拖拽排序的完整过程。首先需要准备 HTML 结构并应用适当的 CSS 样式,接着利用 jQuery 以及 jQuery UI 提供的 Sortable 方法进行初始化设置,最终通过回调函数...
- 数据持久化:拖动排序后,记得更新后台数据或存储状态,以确保排序的持久性。 总结,HTML元素拖动排序是一个提升用户体验的重要特性,通过原生API或第三方插件可以轻松实现。在实际开发中,应考虑兼容性、用户...
5. **事件监听和处理**:在实现拖拽排序功能时,需要监听用户的触摸事件,并根据事件类型(开始、移动、结束)执行相应的操作。例如,`touchstart`事件触发时记录起始位置,`touchmove`事件处理拖动过程,`touchend`...
在开发项目中经常碰到二级目录形式。比如文章模块、产品模块,很多应多都基于两级分类形式。而普通的解决排序方案,不管是一级分类,还是多级分类,...本源码中对二级目录进行拖拽排序,是根据jQuery拖拽排序插件实现。
在实现拖拽排序时,我们还需要考虑到一些优化和用户体验的细节。例如,使用CSS3的transform属性可以提高拖动时的性能,因为它允许浏览器进行硬件加速。同时,为了避免误操作,我们可以设置一个可拖动区域,只有在这...
jQuery拖拽插件是这个库的一个扩展,它允许用户通过鼠标拖动元素来实现各种交互效果,例如在列表或网格中的拖拽排序。本教程将深入讲解如何利用jQuery制作拖拽排序特效,这将极大地提升用户体验,尤其是在数据管理或...
《jQuery实现鼠标拖动div排序技术详解》 在网页开发中,用户交互体验是至关重要的。其中,元素的可拖动排序功能可以让用户更加直观地调整界面布局,提高使用便捷性。本文将深入探讨如何利用jQuery库实现鼠标上下...
这个“js拖拽排序-可以拖拽的DIV.rar”文件很可能是包含了一个或多个示例代码,用于演示如何在HTML页面上创建可拖动并能自动排序的DIV元素。下面,我们将深入探讨这一技术的关键知识点。 首先,我们需要理解拖放...
本文将基于提供的代码片段,深入探讨如何利用JavaScript插件实现页面模块的拖拽排序功能,并将排序结果提交至后台服务器的过程。 #### 二、核心概念与原理 ##### 2.1 拖拽排序的基本原理 拖拽排序是指用户可以通过...
【Asp+Jq+access 拖动排序实例】是一个结合了ASP、jQuery和Access数据库的交互式拖动排序功能实现。这个实例主要用于展示如何在网页上通过拖放操作来调整列表项的顺序,并将这些更改同步到后台Access数据库中。 ...
5. **数据同步**:拖拽排序完成后,通常需要将新的顺序同步到后台数据库或保存在本地存储中,以便在下次访问时保持用户的排序设置。 通过这个插件,开发者可以快速实现一个交互性强、用户体验良好的拖拽排序功能,...
当用户拖动一个div元素时,插件会监听鼠标事件,并在后台跟踪元素的位置变化,确保数据模型与用户的拖放操作保持同步。 在描述中提到的“div拖拽排序代码下载”,指的是这个插件适用于包含div元素的HTML结构。在...