瀏覽代碼

修复参数填充多次重入问题.

https://gitee.com/baomidou/mybatis-plus/issues/I8506T
https://gitee.com/baomidou/mybatis-plus/issues/I82VLI
nieqiurong 1 年之前
父節點
當前提交
ae55926211

+ 7 - 1
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/MybatisParameterHandler.java

@@ -43,8 +43,10 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Collections;
+import java.util.HashSet;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
+import java.util.Set;
 
 
 /**
 /**
  * 自定义 ParameterHandler 重装构造函数,填充插入方法主键 ID
  * 自定义 ParameterHandler 重装构造函数,填充插入方法主键 ID
@@ -229,9 +231,13 @@ public class MybatisParameterHandler implements ParameterHandler {
             if (parameterMap.containsKey(Constants.ENTITY)) {
             if (parameterMap.containsKey(Constants.ENTITY)) {
                 parameters.add(parameterMap.get(Constants.ENTITY));
                 parameters.add(parameterMap.get(Constants.ENTITY));
             }
             }
+            Set<Collection<Object>> objectSet = new HashSet<>();
             for (String key : COLLECTION_KEYS) {
             for (String key : COLLECTION_KEYS) {
                 if (parameterMap.containsKey(key)) {
                 if (parameterMap.containsKey(key)) {
-                    parameters.addAll(toCollection(parameterMap.get(key)));
+                    Collection<Object> collection = toCollection(parameterMap.get(key));
+                    if (objectSet.add(collection)) {
+                        parameters.addAll(collection);
+                    }
                 }
                 }
             }
             }
         } else {
         } else {