mybatis-plus启用 InsertBatchSomeColumn
创建一个SpiceBaseMapper
/**
* @date: 2022/4/6 18:56
* @author: lq
*/
public interface SpiceBaseMapper<T> extends BaseMapper<T> {
/**
* 批量插入
* {@link com.baomidou.mybatisplus.extension.injector.methods.additional.InsertBatchSomeColumn}
*
* @param entityList 要插入的数据
* @return 成功插入的数据条数
*/
int insertBatchSomeColumn(List<T> entityList);
}
继承DefaultSqlInjector
/**
* @date: 2022/4/6 18:51
* @author: lq
*/
@Component
public class SqlInjectorPlus extends DefaultSqlInjector {
@Override
public List<AbstractMethod> getMethodList() {
//继承原有方法
List<AbstractMethod> methodList = super.getMethodList();
//注入新方法
methodList.add(new InsertBatchSomeColumn(t -> !t.isLogicDelete()));
return methodList;
}
}
考虑batchSize
在service中,调用 insertBatchSomeColumn,一次拼接多少个values
@Override
public int insertBatchSomeColumn(List<QuotationsBasicInfo> entityList) {
int i = 0;
int y = 0;
for (QuotationsBasicInfo anEntityList : entityList) {
if (i > 0 && (i % 1000 == 0 || i == entityList.size() - 1)) {
baseMapper.insertBatchSomeColumn(entityList.subList(y * 1000, i));
y++;
}
i++;
}
return i;
}