Java实现列表上移,下移操作总结

java 基于jeecg-boot的公告管理——上移、下移、置顶 基于jeecg-boot开源架构的公告管理模块,包括公告的置顶、发布、下架、上移、下移功能 阅读详情

最近遇到这么一个需求,要求对列表中的数据进行自定义排序操作,思前想后,决定通过上下移动来实现此功能。

实现思路:

1.在数据库中对要进行排序那张表新增一个sort字段用于排序。

2.每当新增一条记录时,sort的值都会在上一条的记录上进行+1。即每次新增记录时,先查出已存在的sort值最大的那条记录,然后新增记录的sort值为该记录的sort的值+1。

3.列表向上移动的时候查询出当前数据的上一条数据的sort值,两者交换sort值,同理向下移动的时候,查询出下一条数据的sort值,两者交换。 

springboot+mybatis代码实现:

1.SQL

  <select id="selectMaxSort" resultType="java.lang.Integer">
    select IFNULL(max(sort),0)  from classic_case
  </select>
  <select id="moveUp" resultMap="ResultMapWithBLOBs" parameterType="java.lang.Integer">
        select
        <include refid="Base_Column_List"/>
        ,
        <include refid="Blob_Column_List"/>
        from classic_case f
        WHERE f.sort &lt; #{sort} order by f.sort desc limit 0,1
  </select>
  <select id="moveDown" resultMap="ResultMapWithBLOBs" parameterType="java.lang.Integer">
        select
        <include refid="Base_Column_List"/>
        ,
        <include refid="Blob_Column_List"/>
        from classic_case f
        WHERE f.sort &gt; #{sort} order by f.sort asc limit 0,1
  </select>

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) {

        //获取当前最大的sort值

        Integer sort = classicCaseMapper.selectMaxSort();
        //如果为0,目前还没有数据
        if (sort == 0) {
            //将sort值设为1
            record.setSort(1);
        } else {
            //否则在最大的sort值上加一
            record.setSort(sort + 1);
        }
        System.out.println(record.getDetail());
        return classicCaseMapper.insertSelective(record);
    }

 @Override
    public void moveUp(Integer classicId) {

        //获取要上移的那条数据的信息
        ClassicCase classicCase = classicCaseMapper.selectByPrimaryKey(classicId);

        //查询上一条记录
        ClassicCase casePrev = classicCaseMapper.moveUp(classicCase.getSort());

        //最上面的记录不能上移
        if (casePrev == null) {
            return;
        }
        //交换两条记录的sort值
        Integer temp = classicCase.getSort();
        classicCase.setSort(casePrev.getSort());
        casePrev.setSort(temp);

        //更新到数据库
        classicCaseMapper.updateByPrimaryKeySelective(classicCase);
        classicCaseMapper.updateByPrimaryKeySelective(casePrev);
    }


    @Override
    public void moveDown(Integer classicId) {
        //获取要下移的那条数据的信息
        ClassicCase classicCase = classicCaseMapper.selectByPrimaryKey(classicId);

        //查询下一条记录
        ClassicCase caseNext = classicCaseMapper.moveDown(classicCase.getSort());

        //最下面的记录不能下移
        if (caseNext == null) {
            return;
        }
        //交换两条记录的sort值
        Integer temp = classicCase.getSort();
        classicCase.setSort(caseNext.getSort());
        caseNext.setSort(temp);

        //更新到数据库
        classicCaseMapper.updateByPrimaryKeySelective(classicCase);
        classicCaseMapper.updateByPrimaryKeySelective(caseNext);
    }

4.Controller

   /**
     * 更新排序
     * @param sortStr 操作字符(down---下移,up---上移)
     * @param classicId 案例id
     * @return
     */
    @RequestMapping(value = "/updateSort",method = RequestMethod.GET)
    public BaseResponse updateSort(String sortStr, Integer classicId) {

        ResponseBuilder custom = ResponseBuilder.custom();
        try {
            if (sortStr.equals("down")) {
                classicCaseService.moveDown(classicId);
            } else if (sortStr.equals("up")) {
                classicCaseService.moveUp(classicId);
            }

            custom.success(Constant.SUCCESS,Constant.SUCCESS_CODE);
        } catch (Exception e) {
            custom.failed(Constant.FAIL, Constant.EXCEPTION_CODE);
        }
        return custom.build();
    }

这便是该功能的简单实现,我个人认识浅薄,有更好的方法还望各位大神指教。

利用swing的undo包实现Undo/Redo功能 利用swing的undo包实现Undo/Redo功能 一、概述javax.swing.undo包提供了一系列接口和类,利用它可以方便的在程序中加入Undo/Redo功能。 先说说undo包引入的一个概念——Edit。它是与Command模式中的Command类似的一个概念。Command模式将操作的执行逻辑封装到一个个Command对象中,解耦了操作发起者和操作执行逻辑之间的耦 阅读详情

相关推荐

实现上移下移

NULL 博文链接:https://632902651-qq-com.iteye.com/blog/1676286

实现目录数据的上移(up)、下移(down)、置顶(top)、置底(bottom)的操作

【代码】实现目录数据的上移(up)、下移(down)、置顶(top)、置底(bottom)的操作。

qq_49641620的博客 819

GMSL Strapping Pins CFG0/CFG1 应用

如果 0x13.bit3 = 0, 则是链路没有 Locked,需要去排查下具体问题(通常是工作模式配置问题)如果遇到 Link 无法建立(Locked),电源没有问题的情况下,多半是加串器和解串器的工作模式不匹配。芯片在上电时,会检测这两个管脚的电压,根据不同的电压值,芯片进入到不同的工作模式。一对加串器和解串器,只要工作模式匹配得当,Link Locked,便能够正常工作。ADI 已经充分考虑了用户的需求,尽可能的降低的芯片的使用和配置复杂度。GMSL 的解串器也是类似的配置,具体请参考对应的规格书。

iStoneWalker的博客 1271

Java实现列表(一行数据)上移,下移操作

最近遇到这么一个功能需求,要求对列表中的(一行)数据可以进行上移、下移。 实现思路: 1.在数据库中对要进行排序那张表新增一个node_num字段用于排序。 2.每当新增一条记录时,node_num的值都会在上一条的记录上进行+1。即每次新增记录时,先查出已存在的node_num值最大的那条记录,然后新增记录的node_num值为该记录的node_num的值+1。 3.列表向上移动的时候查询出当前...

陈三千的博客 5070

优化NEXYS A7开发板(Xilinx Artix-7)Microblaze核的FLASH读写性能实战

本文针对NEXYS A7开发板(Xilinx Artix-7)上Microblaze核读写FLASH速度慢的问题,提供了系统性的优化实战指南。通过深入分析SPI控制器配置、Flash指令模式选择、Microblaze核的Cache与硬件加速器优化,以及程序运行位置(BRAM vs DDR)的调整,有效将FLASH读写性能从“龟速”提升至接近理论峰值。文章结合实测数据,为FPGA嵌入式开发者提供了清晰的性能瓶颈分析与解决方案。

carrot的博客 258

阿里云百炼接入本地Claude,接入idea

阿里云百炼平台提供两种接入方式:未购买套餐时使用通用API Key(sk-xxxxx),需注意免费额度独立计算且不会自动切换模型;购买Coding Plan套餐后使用专属API Key(sk-sp-xxxxx),享受固定月费无超支风险。配置需在.claude/settings.json中设置认证信息,包括API Key和Base URL。建议开启"用完即停"功能避免意外扣费,不同模型的免费额度互不影响。购买套餐后还可通过IDEA插件Claude Code进行集成,实现固定费用下的稳定使用

fengtangjiang的博客 1360

java实现列表上移下移的功能实现

java实现列表上移下移的总结 思路: 1.在数据库中对要进行排序那张表新增一个sort字段用于排序。 2.每当新增一条记录时,sort的值都会在上一条的记录上进行+1。即每次新增记录时,先查出已存在的sort值最大的那条记录,然后新增记录的sort值为该记录的sort的值+1。 3.列表向上移动的时候查询出当前数据的上一条数据的sort值,两者交换sort值,同理向下移动的时候,查询出下一条数据的sort值,两者交换。 SQL 上一条数据的sort值 <select id="selectColumn

Lfl_520的博客 1407

实战分享:如何用本地替换和插桩调试搞定Kasada最新版x-kpsdk-cd环境检测

本文深入解析Kasada最新版x-kpsdk-cd环境检测机制,提供动态请求拦截、本地替换和函数插桩等实战调试策略。通过Proxy保护破解、关键函数断点调试和环境检测对抗方案,帮助逆向工程师有效应对从280位扩展到294位的加密数组挑战,实现高效补环境调试。

weixin_29251567的博客 570

java 上移 下移排序_Java实现列表上移,下移操作总结

最近遇到这么一个需求,要求对列表中的数据进行自定义排序操作,思前想后,决定通过上下移动来实现此功能。实现思路:1.在数据库中对要进行排序那张表新增一个sort字段用于排序。2.每当新增一条记录时,sort的值都会在上一条的记录上进行+1。即每次新增记录时,先查出已存在的sort值最大的那条记录,然后新增记录的sort值为该记录的sort的值+1。3.列表向上移动的时候查询出当前数据的上一条数据的s...

weixin_30181187的博客 2960

微信Dat文件转图片(文末含工具下载)

PC端微信dat图片转换为jpg格式

weixin_40704848的博客 8086

Solidworks曲面建模学习(三)——样条曲线

本文主要演示平面的空间样条曲线的一些绘制。

东东不熬夜的博客 6503

Java实现列表数据的上移和下移总结

Java实现列表数据的上移和下移总结 主要思路:一般涉及到排序功能,数据库都会新增一个sort为int型的字段,新增一条数据时,sort取当前表里sort最大值再加1,上移功能,主要是拿当前需要移动数据的id,找到上一条记录,交换sort,再更新数据库这两条数据;下移反之,具体实现如下: controller层只需要一个接口实现上移下移功能,传入的对象新增一个b...

qq_31263039的博客 6396

【2026年华为暑期实习/秋招(AI)-8月5日-第一题- 选择题】(题目+思路+Java&C++&Python解析+在线测试)

摘要: 本文包含20道选择题,涵盖深度学习、数值计算、概率统计、线性代数及机器学习等领域。重点考察了Softmax的数值稳定性实现(减去最大值)、视觉问答任务(图像+问题→答案)、分层强化学习的奖惩计算、欧氏距离与余弦相似度、反向传播梯度计算、SVD降维存储优化、贝叶斯概率推断、插值多项式等。此外,涉及逻辑回归评价指标(不含MSE)、端侧推理内存因素(中间激活)、集中趋势度量(均值)、Householder变换性质、早期停止正则化、梯度矩阵秩与优化、在线学习特性及大模型训练技巧(如学习率预热、梯度裁剪)等知

m0_73659489的博客 192

js如何实现列表数据的上移和下移?以及置顶、置底功能

首先,调用list.splice(index - 1, 1, list[index])方法,这个方法会从list数组中删除第index-1个元素,并用第index个元素替换它。这个方法的作用是将list数组中的第index个元素和第index-1个元素交换位置,也就是将第index个元素上移一位。这个方法的作用是将list数组中的第index个元素和第index+1个元素交换位置,也就是将第index个元素下移一位。使用splice方法实现下移的原理和上移类似,只是要将当前位置的元素和下一位的元素交换。

weixin_52099241的博客 4310

YOLO11涨点优化:半监督学习 | 结合Unbiased Teacher框架,利用海量无标签数据实现自训练暴力涨点

本文提出了一种基于Unbiased Teacher v2的半监督学习方法,用于解决YOLO11目标检测模型在标注数据不足时的性能瓶颈问题。通过分析纯监督YOLO11在小样本场景下的局限性,揭示了朴素自训练方法的三大陷阱:确认偏差、类别不均衡和噪声累积。文章详细解析了Unbiased Teacher框架的核心设计理念,包括教师-学生模型互监督机制、类别平衡损失和Burn-In预热策略,并重点介绍了v2版本针对无锚框检测器的优化。最后提出将Unbiased Teacher与YOLO11相结合的融合架构设计方案,

2601_95807009的博客 208

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

上移下移操作

很想弄个上移下移操作的通用层,但是在设计的时候发现设计后整个Action代码用起来却更加的复杂。所以就先放弃掉,以后有更好的办法再将其设计一遍。现在先只能将我所写的Action粘贴过来,以后如果碰见上移下移的操作方便参照,下面的这个需要对照以前设计的通用层: public String operateClassification(){ Classification theClass

学而不思则罔 思而不学则殆 4879

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

JAVA对数据进行上移、下移、置顶(倒序排序)操作

解决思路:上移:取上一条记录排序号,将当前记录与上一条记录排序号调换位置                   下移:取下一条记录排序号,将当前记录与下一条记录排序号调换位置                   置顶:获取最大的记录排序号,修改当前记录的排序号为最大排序号+1 mybatis编写sql获取上一条记录排序号和下一条记录排序号 &lt;!-- 读取上一条记录--&gt; ...

lan_qinger的博客 1万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

java列表上移下移实现

java列表上移下移实现 列表插入时排序字段的最大值+5 UPDATE `tb_test` t, <if test="type == 'up'"> (SELECT IFNULL(MAX(sort), #{sort}) AS msort FROM `tb_test` WHERE <![CDATA[ sort < #{sort} ]]>) t1 </if> <if test="type == 'down'">

weixin_43700984的博客 395

java列表框_Java界面 SWT基本组件——列表框(List)

列表框(List)的基本样式与基础应用本次实验要求设计一个小程序来说明列表框的一些常用方法。程序的主要功能:1. 单击 “>” 按钮,将左侧选中的选项转移到右侧;2. 单击 “3. 单击 “>>” 按钮,将左侧所有选项都转移到右侧;4. 单击 “<5. 单击 "Up" 按钮,将所选的选项(右侧)向上移动一个位置;6. 单击 “Down” 按钮,将所选的选项(右侧)向下移动一...

weixin_42548708的博客 957

为什么是七个孩子?container中的childnodes个数为什么不是3而是7?

test function countDiv(){ var obj_div = document.getElementById('container'); var cn =obj_div.childNodes.length 1 &nbsp; ...

iteye_13067的博客 183

java 点击表头排序_Java——点击上下箭头实现商品排序

在项目中有时候难免会遇上这种商品排序的需求,当然,别的排序也是一样的原理,如下图现在给我的要求是做到点击↑就把商品网上移动,点击↓就把商品往下移动,其实原理就是互换位置了,每个商品对应一个sortNum(排序码),展示这个列表的时候是在SQL语句中根据sortNum进行排序,正序或者倒序,思路就是点↑的时候把上下的排序码互换位置,点击↓的原理也是如此 如果仅仅是想实现这样最简单的上下排序那么非常的...

weixin_36212732的博客 983

Java实现列表中上移、下移操作

需求说明 实现思路 相关代码 参考链接

我可能在扯淡 5437

java链表实现列表数据上移下移_在有序数据表中实现多记录上移下移置顶置底算法思路...

引言数据库应用中常需要在一个有序数据子集中,对指定的若干条记录进行上下移动。例如,管理员需要对新闻列表中的若干条新闻置顶,考试出卷时需要对选定题目进行上下移动重排顺序,等等。总的应该场景在数据表中可以概括为如下模型:数据表 TblData(id,fid,rank),id表示记录的唯一标识,fid指记录的父节点,rank代表父节点下兄弟的前后顺序,依次从1递增,没有空隙。问题是要对相同fid下选中的...

weixin_36382155的博客 270

vue+springboot+mybatis实现置顶 上移 下移

实现思路: 在数据库中对要进行排序那张表新增一个sort字段用于排序。 列表向上移动的时候通过列表下标index查询出当前数据的上一条数据的sort值,两者交换sort值,同理向下移动的时候,查询出下一条数据的sort值,两者交换。 springboot+mybatis代码实现: (一)java后台实现置顶 上下移 <el-button size="small" plain type="info" @click="setTop(scope.row)" v-if="scope.row.sor

。。。 2546
上一篇: MySql的root密码忘记该怎么找回
下一篇: 使用SpringBoot+MyBatis+MySQL实现图片上传
zcczero
博客等级 码龄9年 38粉丝 24原创
评论 14
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值