简单的图片排序_如何给图片排序

简单的图片排序_如何给图片排序昨天工作的时候写了图片的排序接口,让后台自定义图片的位置. 话不多说先上修改图片序号的实现原理: 将5号移到2号, 此时区间 [ 2,5 ) 内的排序号都要加1. 将2号移到5号, 此时区间 ( 2,

简单的图片排序

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

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

简单的图片排序_如何给图片排序

 

 

     将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);
}

代码100分

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/10254.html

(0)
上一篇 2023-01-22 15:00
下一篇 2023-01-22

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注