From 545f0bd4b0b2f84fb54c165bc551aa08ca9c073e Mon Sep 17 00:00:00 2001
From: 抓蛙师 <770492966@qq.com>
Date: 星期三, 25 八月 2021 20:24:35 +0800
Subject: [PATCH] saveAll支持有id则更新和无id则插入
---
ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/core/ServicePlusImpl.java | 27 ++++++++++++++++++++++++++-
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestBatchController.java | 9 +++++++--
2 files changed, 33 insertions(+), 3 deletions(-)
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/core/ServicePlusImpl.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/core/ServicePlusImpl.java
index 90a1bd4..99441b5 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/core/ServicePlusImpl.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/core/ServicePlusImpl.java
@@ -1,6 +1,8 @@
package com.ruoyi.common.core.mybatisplus.core;
import cn.hutool.core.bean.copier.CopyOptions;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.ClassUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -11,6 +13,9 @@
import org.springframework.core.ResolvableType;
import java.io.Serializable;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -118,7 +123,27 @@
*/
@Override
public boolean saveAll(Collection<T> entityList) {
- return baseMapper.insertAll(entityList) == entityList.size();
+ ArrayList<T> list = new ArrayList<>();
+ for (T t : entityList) {
+ try {
+ //鑾峰彇灞炴�ф敞瑙g殑value鍊�
+ Field f = t.getClass().getDeclaredField("id");
+ f.setAccessible( true );//璁剧疆鍙互鑼冨洿private
+ Object o = f.get(t);//鑾峰彇鍑篿d鐨勫��
+ System.out.println(o);
+ if (o == null) {
+ //濡傛灉id涓簄ull,鎻掑叆
+ list.add(t);
+ } else {
+ //鍚﹀垯鏇存柊
+ baseMapper.updateById(t);
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return baseMapper.insertAll(list) == list.size();
}
/**
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestBatchController.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestBatchController.java
index f3a7f6d..db96797 100644
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestBatchController.java
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestBatchController.java
@@ -39,8 +39,13 @@
// @DataSource(DataSourceType.SLAVE)
public AjaxResult<Void> add() {
List<TestDemo> list = new ArrayList<>();
- for (int i = 0; i < 1000; i++) {
- list.add(new TestDemo().setOrderNum(-1L).setTestKey("鎵归噺鏂板").setValue("娴嬭瘯鏂板"));
+ for (int i = 0; i < 10; i++) {
+ TestDemo testDemo = new TestDemo();
+ if (i % 2 == 0) {
+ list.add(testDemo.setId((long) i + 1).setTestKey("鎵归噺鏇存柊").setValue("鎵归噺鏇存柊"));
+ } else {
+ list.add(testDemo.setOrderNum(-1L).setTestKey("鎵归噺鏂板").setValue("娴嬭瘯鏂板"));
+ }
}
return toAjax(iTestDemoService.saveAll(list) ? 1 : 0);
}
--
Gitblit v1.9.3