From 3e5ae811bf81f567967cd25526a423bbd91cffc9 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子Li <15040126243@163.com>
Date: 星期四, 26 八月 2021 09:24:20 +0800
Subject: [PATCH] !82 saveAll支持有id更新,无id插入 Merge pull request !82 from 抓蛙师/dev

---
 ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/core/ServicePlusImpl.java |   27 ++++++++++++++++++++++++++-
 1 files changed, 26 insertions(+), 1 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();
 	}
 
 	/**

--
Gitblit v1.9.3