简单的图片排序

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

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

将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<AppImg> 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端需要展示的每个类型的图片量比较少,所以我写了个简单的排序.如果排序量成千上万,数量比较多的不建议使用我这个实现原理,因为区间内每个图片的序号都需要修改对数据的压力比较大.第一次写博客,手有点抖,大佬们随便看看就好
(0)

相关推荐

  • 知识点补充

    五点常用小知识 一.超链接在新窗口打开 我们要想让超链接在新的窗口中打开的时候,就要在a标签中设置target属性 我们来实验一下 上面没有设置target属性,默认为在当前窗口打开 下面设置了tar ...

  • Ecshop商品分类页排序方式推荐排序为图片排序方式

    Ecshop修改商品分类页的排序方式为推荐排序 要 修改Ecshop商品分类页图片的排序方式,我们只需要修改Ecshop里category.php的$default_sort_order_type 默 ...

  • 11条简单产品图片拍摄技巧,告诉你漂亮的产品图片照怎么拍出来的!

    你是否想要拍摄出惊人的产品摄影照片?但却不知道如何进行下手,本文将为你提供11条简单的产品摄影技巧,这些技巧告知你怎么将产品照片提升到一个新的水平. 1.开始拍摄之前,请仔细清洁产品 拍摄精美的产品摄 ...

  • 农村二层简单别墅图片,不仅是别墅更加美观

    农村二层简单别墅图片,不仅是别墅更加美观 结构形式: 砖混 房屋层数: 二层别墅设计图 图纸属性  编号:AZ670  层数:二层  结构形式:砖混  主体造价:36-40万  开间:16米  进深: ...

  • 电脑和笔记本换固态硬盘简单操作图片

    一.电脑换固态硬盘: 二.笔记本换固态硬盘: 三固态硬盘接口:

  • 一组简单花卉图案图片

    2017-01-26 14:40 关注楼主 儿童毛衣编织图案大全 1 回复 非常好看的棒针编织花样图解,很特殊! 毛线编织双色工字型棉鞋的详细编制教程 棒针通用型棉鞋上鞋面的制作教程 简单的地板袜的织 ...

  • 超简单油画图片大全

    随着油画的不断发展,各种油画的派别都有了不同的改进和技术上的突破,从东方的意象式的绘画方式到西方具象式的写实绘画都有了不同的发展,主要表现在绘画语言表达的相同方式上.学习啦小编整理了超简单油画,欢迎阅 ...

  • 学用系列|Images to Video,一种简单的图片转视频方法

    如果有一大堆照片想简单转为视频,除了使用PR等专业软件之外,其实我们还可以用一些非常简单的软件就能实现这一功能--Images to Video. 轻松实现图片转视频 Images to Video ...

  • icrawler:强大简单的图片爬虫库

    icrawler基本用法 内置爬虫 该框架包含6个内置的图像抓取工具. 谷歌 bing 百度 Flickr 通用网站图片爬虫(greedy) UrlList(抓取给定URL列表的图像) 以下是使用内置 ...

  • 简单的图片爬虫

    图片怎么爬取,怎么下载保存呢? 思路: 1.发起请求 2.得到响应的二进制数据 3.以二进制数据创建图片 4.保存 示例 这是我在桌面壁纸网找到的一个卡通美女图的资源地址 http://desk.fd ...

  • 超简单版画图片大全

    版画在中国悠久的历史,版画中的表现形式有多种,色彩是版画的重要表现因素,比较常见的是黑白版画.以下是学习啦小编分享给大家的版画图片,大家一起来欣赏一下吧! 超简单版画图片大全 [超简单版画图片大全:1 ...