From 6afc5f1f7ba402ec41f449d369d6f0ec7d39489d Mon Sep 17 00:00:00 2001 From: Suomm <1474983351@qq.com> Date: Fri, 12 Apr 2024 10:01:14 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E5=85=A8=E5=B1=80?= =?UTF-8?q?=E6=B3=A8=E5=86=8C=E5=A4=9A=E4=B8=AA=E7=9B=91=E5=90=AC=E5=99=A8?= =?UTF-8?q?=E3=80=82https://gitee.com/mybatis-flex/mybatis-flex/issues/I9F?= =?UTF-8?q?F24?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mybatisflex/core/FlexGlobalConfig.java | 41 ++++++++++--------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/FlexGlobalConfig.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/FlexGlobalConfig.java index 915507d8..4f4d8c43 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/FlexGlobalConfig.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/FlexGlobalConfig.java @@ -27,6 +27,7 @@ import org.apache.ibatis.session.Configuration; import org.apache.ibatis.session.SqlSessionFactory; import javax.sql.DataSource; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -66,9 +67,9 @@ public class FlexGlobalConfig { /** * entity 的监听器 */ - private Map, SetListener> entitySetListeners = new ConcurrentHashMap<>(); - private Map, UpdateListener> entityUpdateListeners = new ConcurrentHashMap<>(); - private Map, InsertListener> entityInsertListeners = new ConcurrentHashMap<>(); + private Map, List> entitySetListeners = new ConcurrentHashMap<>(); + private Map, List> entityUpdateListeners = new ConcurrentHashMap<>(); + private Map, List> entityInsertListeners = new ConcurrentHashMap<>(); /** @@ -147,49 +148,49 @@ public class FlexGlobalConfig { this.keyConfig = keyConfig; } - public Map, SetListener> getEntitySetListeners() { + public Map, List> getEntitySetListeners() { return entitySetListeners; } - public void setEntitySetListeners(Map, SetListener> entitySetListeners) { + public void setEntitySetListeners(Map, List> entitySetListeners) { this.entitySetListeners = entitySetListeners; } - public Map, UpdateListener> getEntityUpdateListeners() { + public Map, List> getEntityUpdateListeners() { return entityUpdateListeners; } - public void setEntityUpdateListeners(Map, UpdateListener> entityUpdateListeners) { + public void setEntityUpdateListeners(Map, List> entityUpdateListeners) { this.entityUpdateListeners = entityUpdateListeners; } - public Map, InsertListener> getEntityInsertListeners() { + public Map, List> getEntityInsertListeners() { return entityInsertListeners; } - public void setEntityInsertListeners(Map, InsertListener> entityInsertListeners) { + public void setEntityInsertListeners(Map, List> entityInsertListeners) { this.entityInsertListeners = entityInsertListeners; } public void registerSetListener(SetListener listener, Class... classes) { for (Class aClass : classes) { - entitySetListeners.put(aClass, listener); + entitySetListeners.computeIfAbsent(aClass, k -> new ArrayList<>()).add(listener); } } public void registerUpdateListener(UpdateListener listener, Class... classes) { for (Class aClass : classes) { - entityUpdateListeners.put(aClass, listener); + entityUpdateListeners.computeIfAbsent(aClass, k -> new ArrayList<>()).add(listener); } } public void registerInsertListener(InsertListener listener, Class... classes) { for (Class aClass : classes) { - entityInsertListeners.put(aClass, listener); + entityInsertListeners.computeIfAbsent(aClass, k -> new ArrayList<>()).add(listener); } } - public SetListener getSetListener(Class entityClass) { + public List getSetListener(Class entityClass) { return entitySetListeners.get(entityClass); } @@ -204,21 +205,23 @@ public class FlexGlobalConfig { return this.findSupportedListeners(entityClass, this.entitySetListeners); } - public UpdateListener getUpdateListener(Class entityClass) { + public List getUpdateListener(Class entityClass) { return entityUpdateListeners.get(entityClass); } /** * 查找支持该 {@code entityClass} 的监听器 + * * @param entityClass 实体class * @param listenerMap 监听器map + * @param 监听器类型 * @return 符合条件的监听器 - * @param 监听器类型 */ - public List findSupportedListeners(Class entityClass, Map, T> listenerMap) { - return listenerMap.entrySet().stream() + public List findSupportedListeners(Class entityClass, Map, List> listenerMap) { + return listenerMap.entrySet() + .stream() .filter(entry -> entry.getKey().isAssignableFrom(entityClass)) - .map(Map.Entry::getValue) + .flatMap(e -> e.getValue().stream()) .collect(Collectors.toList()); } @@ -234,7 +237,7 @@ public class FlexGlobalConfig { } - public InsertListener getInsertListener(Class entityClass) { + public List getInsertListener(Class entityClass) { return entityInsertListeners.get(entityClass); }