insertIgnoreBatch/replaceBatch改造

pro
wj 2 years ago
parent 1bed2cf9fd
commit 6111d7c580

@ -18,10 +18,7 @@ import org.apache.ibatis.logging.Log;
import org.apache.ibatis.logging.LogFactory; import org.apache.ibatis.logging.LogFactory;
import java.io.Serializable; import java.io.Serializable;
import java.util.Collection; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/** /**
* Mapper , * Mapper ,
@ -242,8 +239,39 @@ public interface BaseMapperPlus<M, T, V> extends BaseMapper<T> {
* @param entityList * @param entityList
* @return * @return
*/ */
default boolean insertIgnoreBatchs(List<T> entityList) {
return insertIgnoreBatchs(entityList, DEFAULT_BATCH_SIZE);
}
default boolean insertIgnoreBatchs(List<T> entityList, int batchSize) {
try {
int size = entityList.size();
int idxLimit = Math.min(DEFAULT_BATCH_SIZE, size);
int i = 1;
//保存单批提交的数据集合
List<T> oneBatchList = new ArrayList<>();
for (Iterator<T> var7 = entityList.iterator(); var7.hasNext(); ++i) {
T element = var7.next();
oneBatchList.add(element);
if (i == idxLimit) {
this.insertIgnoreBatch(oneBatchList);
//每次提交后需要清空集合数据
oneBatchList.clear();
idxLimit = Math.min(idxLimit + batchSize, size);
}
}
} catch (Exception e) {
log.error("insertIgnoreBatch fail", e);
return false;
}
return true;
}
int insertIgnoreBatch(List<T> entityList); int insertIgnoreBatch(List<T> entityList);
/** /**
* *
* replace intoPrimaryKeyuniqueinsert into * replace intoPrimaryKeyuniqueinsert into
@ -262,5 +290,36 @@ public interface BaseMapperPlus<M, T, V> extends BaseMapper<T> {
* @param entityList * @param entityList
* @return * @return
*/ */
default boolean replaceBatchs(List<T> entityList) {
return this.replaceBatchs(entityList, DEFAULT_BATCH_SIZE);
}
default boolean replaceBatchs(List<T> entityList, int batchSize) {
try {
int size = entityList.size();
int idxLimit = Math.min(DEFAULT_BATCH_SIZE, size);
int i = 1;
//保存单批提交的数据集合
List<T> oneBatchList = new ArrayList<>();
for (Iterator<T> var7 = entityList.iterator(); var7.hasNext(); ++i) {
T element = var7.next();
oneBatchList.add(element);
if (i == idxLimit) {
this.replaceBatch(oneBatchList);
//每次提交后需要清空集合数据
oneBatchList.clear();
idxLimit = Math.min(idxLimit + batchSize, size);
}
}
} catch (Exception e) {
log.error("insertIgnoreBatch fail", e);
return false;
}
return true;
}
int replaceBatch(List<T> entityList); int replaceBatch(List<T> entityList);
} }

@ -6,7 +6,7 @@ import java.util.List;
public interface CustomService<T> extends IService<T> { public interface CustomService<T> extends IService<T> {
int insertIgnore(T entity); int insertIgnore(T entity);
int insertIgnoreBatch(List<T> entityList); boolean insertIgnoreBatch(List<T> entityList);
int replace(T entity); int replace(T entity);
int replaceBatch(List<T> entityList); boolean replaceBatch(List<T> entityList);
} }

@ -13,8 +13,8 @@ public class CustomServiceImpl<M extends BaseMapper<T>, T> extends ServiceImpl<B
} }
@Override @Override
public int insertIgnoreBatch(List<T> entityList) { public boolean insertIgnoreBatch(List<T> entityList) {
return baseMapper.insertIgnoreBatch(entityList); return baseMapper.insertIgnoreBatchs(entityList);
} }
@Override @Override
@ -23,7 +23,7 @@ public class CustomServiceImpl<M extends BaseMapper<T>, T> extends ServiceImpl<B
} }
@Override @Override
public int replaceBatch(List<T> entityList) { public boolean replaceBatch(List<T> entityList) {
return baseMapper.replaceBatch(entityList); return baseMapper.replaceBatchs(entityList);
} }
} }

Loading…
Cancel
Save