This is an automated email from the ASF dual-hosted git repository.

zhangzicheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shenyu.git


The following commit(s) were added to refs/heads/master by this push:
     new 740eaa661 [type:bug] fix bug Query failed because there are too many 
rules (#4499)
740eaa661 is described below

commit 740eaa661b0b8e733a55a6d1a4beebc95100c566
Author: yunlongn <[email protected]>
AuthorDate: Fri Mar 24 11:50:40 2023 +0800

    [type:bug] fix bug Query failed because there are too many rules (#4499)
---
 .../shenyu/admin/mapper/RuleConditionMapper.java      | 19 +++++++++++++++++--
 .../main/resources/mappers/rule-condition-sqlmap.xml  |  2 +-
 2 files changed, 18 insertions(+), 3 deletions(-)

diff --git 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/mapper/RuleConditionMapper.java
 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/mapper/RuleConditionMapper.java
index ac3affe95..089525ae1 100644
--- 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/mapper/RuleConditionMapper.java
+++ 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/mapper/RuleConditionMapper.java
@@ -17,13 +17,17 @@
 
 package org.apache.shenyu.admin.mapper;
 
+import com.google.common.collect.Lists;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.shenyu.admin.model.entity.RuleConditionDO;
 import org.apache.shenyu.admin.model.query.RuleConditionQuery;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
+import java.util.Collection;
+import java.util.stream.Collectors;
 
 /**
  * RuleConditionMapper.
@@ -53,8 +57,19 @@ public interface RuleConditionMapper {
      * @param ruleIdSet a set of ruleIds
      * @return a list of {@linkplain RuleConditionDO}
      */
-    List<RuleConditionDO> selectByRuleIdSet(@Param("ruleIdSet") Set<String> 
ruleIdSet);
-    
+    default List<RuleConditionDO> selectByRuleIdSet(@Param("ruleIdSet") 
Set<String> ruleIdSet) {
+        final List<List<String>> ruleIdSetPartition = Lists.partition(new 
ArrayList<>(ruleIdSet), 500);
+        return 
ruleIdSetPartition.stream().map(this::selectByRuleIdSet0).flatMap(Collection::stream).collect(Collectors.toList());
+    }
+
+    /**
+     * select list of rule conditions by a set of ruleIds.
+     *
+     * @param ruleIdSet a set of ruleIds
+     * @return a list of {@linkplain RuleConditionDO}
+     */
+    List<RuleConditionDO> selectByRuleIdSet0(@Param("ruleIdSet") List<String> 
ruleIdSet);
+
     /**
      * insert rule condition.
      *
diff --git a/shenyu-admin/src/main/resources/mappers/rule-condition-sqlmap.xml 
b/shenyu-admin/src/main/resources/mappers/rule-condition-sqlmap.xml
index 8dfecc6da..3595039ab 100644
--- a/shenyu-admin/src/main/resources/mappers/rule-condition-sqlmap.xml
+++ b/shenyu-admin/src/main/resources/mappers/rule-condition-sqlmap.xml
@@ -57,7 +57,7 @@
         </if>
     </select>
 
-    <select id="selectByRuleIdSet" resultMap="BaseResultMap">
+    <select id="selectByRuleIdSet0" resultMap="BaseResultMap">
         SELECT
             <include refid="Base_Column_List"/>
           FROM rule_condition

Reply via email to