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