文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

简单的图片排序

2014-05-10 08:48

关注

简单的图片排序

昨天工作的时候写了图片的排序接口,让后台自定义图片的位置.

话不多说先上修改图片序号的实现原理:

 

 

     将5号移到2号,  此时区间 [ 2,5 ) 内的排序号都要加1.

 

 

 

 

      将2号移到5号,  此时区间 ( 2,5 ] 内的排序号都要减1.

新增图片序号的实现原理:

 

 新增图片序号为3,那么区间 [ 3,∞ ) 内的序号均加1

 

了解原理后上实现代码:

id:图片ID;

imgType:图片类型;

orderId:图片序号.

private void orderIdSort(AppImgBackVo appImg){
Example exampleTwo = new Example(AppImg.class);
Example.Criteria criteriaTwo = exampleTwo.createCriteria();
criteriaTwo.andEqualTo("imgType", appImg.getImgType());
//通过图片类型查找是否存在这个类型的图片
List appImgList = appImgMapper.selectByExample(exampleTwo);
//如果没有这个类型的图片
if(appImgList.size() == 0){
//排序号赋值为1
appImg.setOrderId(1);
}else {
//如果不输入排序号
if(appImg.getOrderId() == null){
//已存在的数量
Integer orderIdMax = appImgMapper.selectMaxOrderId(appImg.getImgType());
//如果是新增,排序号默认为:数量+1
if(appImg.getId() == null){
appImg.setOrderId(orderIdMax+1);
}else {//如果是修改:排序号默认为最大排序号
appImg.setOrderId(orderIdMax);
}
}else {//自定义排序号
//当排序号小于1时,默认为1
if(appImg.getOrderId() < 1){
appImg.setOrderId(1);
}
if(appImg.getId() == null){//添加
//排序号大于原有数量+1时默认为最大数+1
if(appImg.getOrderId() > appImgList.size()+1){
appImg.setOrderId(appImgList.size()+1);
}
                //排序号大于原有数量+1时默认为原有数量+1
                for (AppImg appImgTwo : appImgList){                    区间内排序号+1                    if(appImgTwo.getOrderId() >= appImg.getOrderId()){
appImgTwo.setOrderId(appImgTwo.getOrderId()+1);
appImgMapper.updateByPrimaryKey(appImgTwo);
}
}
}else {//修改
if(appImg.getOrderId() > appImgList.size()){
//排序号大于原有数量+1时默认为原有数量
appImg.setOrderId(appImgList.size());
}
AppImg appImgOld = appImgMapper.selectByPrimaryKey(appImg.getId());
//原先的排序号
Integer orderIdOld = appImgOld.getOrderId();
//修改后的排序号
Integer orderIdNew = appImg.getOrderId();
//遍历所有同类型图片
for (AppImg appImgTwo : appImgList){
if(orderIdOld > orderIdNew){ //向前移动
//改动区间内的排序号+1
if(appImgTwo.getOrderId() >= orderIdNew && appImgTwo.getOrderId() < orderIdOld){
appImgTwo.setOrderId(appImgTwo.getOrderId()+1);
appImgMapper.updateByPrimaryKey(appImgTwo);
}
}else {//向后移动
//改动区间内的排序号-1
if(appImgTwo.getOrderId() <= orderIdNew && appImgTwo.getOrderId() > orderIdOld){
appImgTwo.setOrderId(appImgTwo.getOrderId()-1);
appImgMapper.updateByPrimaryKey(appImgTwo);
}
}
}
}
}
}
}
因为项目里在APP端需要展示的每个类型的图片量比较少,所以我写了个简单的排序.
如果排序量成千上万,数量比较多的不建议使用我这个实现原理,因为区间内每个图片的序号都需要修改对数据的压力比较大.
第一次写博客,手有点抖,大佬们随便看看就好
阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯