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

发布时间:2021-10-16 15:30:39

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


实现思路:


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


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


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


springboot+mybatis代码实现:


1.SQL


select IFNULL(max(sort),0) from classic_case


select


,


from classic_case f


WHERE f.sort < #{sort} order by f.sort desc limit 0,1


select


,


from classic_case f


WHERE f.sort > #{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) {


//获取当前最大的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();


}


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







相关资源:jQuery Easyui datagrid行内实现【添加】、【编辑】、【上移】、【下移

相关文档

  • anaconda安装scikit-learn
  • 【Ubuntu16】kvm虚拟机根分区扩容(qcow2)
  • 遵守交通法规安全伴你出行
  • 瓷砖裂缝怎么修补修补瓷砖裂缝的有效方法
  • live555交叉编译提示openssl找不到
  • 公司三送活动的工作总结
  • 拉布拉多犬冬天能在外边过冬吗
  • DNS解析(双向解析,集群)
  • 高三班主任励志演讲稿
  • 得到整个屏幕的DC
  • 拳道运动中如何科学地避免受伤
  • 丰收的秋天手抄报
  • 一分钟感人精彩演讲稿
  • 社区现场汇报演讲词
  • 高中新颖作文人物素材摘抄经典语段积累
  • 人生伤感的句子大全
  • 关于成功的励志故事经典
  • 宣传学校的广告语精选
  • 一条线上有4个点共有几条线段
  • 帽子的故事作文400字
  • 带你走进音乐世界的书籍
  • 教育实习自我鉴定,教育实习自我鉴定
  • python编程入门视频-带学《Python编程:从入门到实践》
  • 孙红雷刘华强哪一部电视剧
  • 手机数据为什么突然用不了
  • 你最不能理解的网红美食是什么?请举例说明!
  • idea跳转到错误_IDEA JavaWeb项目启动运行后出现404错误的解决方法
  • 供电局企业文明建设情况汇报:文明城市创建工作情况汇报
  • 湘教七年级上数学教学计划
  • 开展“双创”工作简报
  • 猜你喜欢

  • 乙型肝炎病毒母婴传播预防指南ppt课件
  • 如何提高信息技术课堂教学效果2
  • 德阳经开区产业发展投资有限公司(企业信用报告)- 天眼查
  • 福建省龙海市福龙塑胶联营厂企业信用报告-天眼查
  • 飞不高的鸟儿的惩罚
  • 以社会主义荣辱观为指导,加强高职学生价值观教育
  • 藏匿着的母爱
  • 最新整理施工现场防火、防雷的安全技术措施.docx
  • 云南楚雄州东兴中学18-19学度高二上9月抽考-数学(理)
  • 单分支的条件语句
  • 四年级上册语文课件-第四单元 作文 我喜欢的小动物 人教新课标(共35张PPT)
  • 啤酒鸡翅的做法怎么做好吃
  • 广州市正点未来营销策划股份有限公司企业信用报告-天眼查
  • 金融学第六讲风险管理
  • 八年级语文下册课件18吆喝 (共19张PPT)
  • NBA中场、每节休息多长时间
  • 南宁市恋购商贸有限公司企业信用报告-天眼查
  • 小学识字教学方法的种类
  • 吃玉米粥能减肥吗 玉米含有叶酸吗
  • 吴江区松陵镇君客装饰材料经营部企业信息报告-天眼查
  • 中华花龟寿命多长,多大成年
  • 后勤管理员岗位责任制
  • 【附20套中考模拟试题】青海省西宁市大通回族土族自治县2019-2020学年中考数学模拟试卷含解析
  • 2019-要下雨了教案优秀设计五精彩奉献-推荐word版 (4页)
  • 登岳阳楼记读后感3篇
  • 精选--学年上学期四年级班主任德育工作总结
  • 六年级语文下册《为人民服务》教学课件
  • 2015年造价师《案例分析》考试大纲
  • 《爱的教育》读后感_读书笔记900字
  • 2019年温州市中考物理模拟试题与答案
  • 贵州省贵阳市第三十八中学2018_2019学年高三英语上学期期中试题(无答案)
  • 新人教版三年级上册数学第二单元《几百几十加、减几百几十(例3)》参考教案
  • 通用版高考语文二轮复*第1部分核心突破专题6语言文字运用第1讲正确使用成语课件
  • 部编版四年级语文上册课件习作6 记 一次游戏
  • 笔记本上有摄像头吗
  • 2019-2020年一年级语文下册 第四单元 要下雨了教案 人教新课标版
  • 商务汉语词汇量101-200
  • 整理一年级下册看拼音写汉字
  • 商丘市人民政府关于加快推进“互联网+政务服务”实施政务服务“
  • 初一写人作文:我最好的朋友_700字_6
  • 【最新2019】小学四年级下册数学字母表示数课后检测题-推荐word版 (1页)
  • 东莞寮步创基印刷厂企业信息报告-天眼查
  • 电脑版