From 482256d8027c81040bb44ea71395759a345c7e36 Mon Sep 17 00:00:00 2001 From: hongawen <83944980@qq.com> Date: Tue, 6 Jun 2023 18:19:09 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../db/service/IReplenishMybatisService.java | 21 ++++++++ .../impl/ReplenishMybatisServiceImpl.java | 49 +++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 pqs-common/common-db/src/main/java/com/njcn/db/service/IReplenishMybatisService.java create mode 100644 pqs-common/common-db/src/main/java/com/njcn/db/service/impl/ReplenishMybatisServiceImpl.java diff --git a/pqs-common/common-db/src/main/java/com/njcn/db/service/IReplenishMybatisService.java b/pqs-common/common-db/src/main/java/com/njcn/db/service/IReplenishMybatisService.java new file mode 100644 index 000000000..242a61860 --- /dev/null +++ b/pqs-common/common-db/src/main/java/com/njcn/db/service/IReplenishMybatisService.java @@ -0,0 +1,21 @@ +package com.njcn.db.service; + +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + * @author hongawen + * @version 1.0.0 + * @date 2023年06月06日 18:14 + */ +public interface IReplenishMybatisService extends IService { + + /*** + * @author hongawen + * @date 2023/6/6 9:33 + * @param data 数据集合 + * @param size 分片的尺寸 + */ + void insertBatchBySlice(List data, int size); +} diff --git a/pqs-common/common-db/src/main/java/com/njcn/db/service/impl/ReplenishMybatisServiceImpl.java b/pqs-common/common-db/src/main/java/com/njcn/db/service/impl/ReplenishMybatisServiceImpl.java new file mode 100644 index 000000000..73d8ae9ba --- /dev/null +++ b/pqs-common/common-db/src/main/java/com/njcn/db/service/impl/ReplenishMybatisServiceImpl.java @@ -0,0 +1,49 @@ +package com.njcn.db.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njcn.db.mapper.BatchBaseMapper; +import com.njcn.db.service.IReplenishMybatisService; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author hongawen + * @version 1.0.0 + * @date 2023年06月06日 18:16 + */ +public class ReplenishMybatisServiceImpl, T> extends ServiceImpl, T> implements IReplenishMybatisService { + + @Override + @Transactional(rollbackFor = Exception.class) + public void insertBatchBySlice(List data, int size) { + try { + int totalCount = data.size(); + int idxLimit = Math.min(size, totalCount); + List dataTemp = new ArrayList<>(data); + //保存单批提交的数据集合 + if (idxLimit == size) { + int times = totalCount / idxLimit + 1; + for (int i = 1; i <= times; i++) { + System.out.printf("第%d次分片%n", i); + if (totalCount >= idxLimit) { + List temp = dataTemp.subList(0, idxLimit); + this.baseMapper.insertBatchSomeColumn(temp); + temp.clear(); + totalCount = totalCount - idxLimit; + } else { + if (CollectionUtil.isNotEmpty(dataTemp)) { + this.baseMapper.insertBatchSomeColumn(dataTemp); + } + } + } + } else { + this.baseMapper.insertBatchSomeColumn(dataTemp); + } + } catch (Exception e) { + throw new RuntimeException("分片批量插入数据异常,异常为:" + e); + } + } +}