miemie 7 سال پیش
والد
کامیت
162f95743c

+ 7 - 3
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/AbstractWrapper.java

@@ -109,8 +109,11 @@ public abstract class AbstractWrapper<T, R, This extends AbstractWrapper<T, R, T
     public This allEq(boolean condition, Map<R, Object> params) {
         if (condition && CollectionUtils.isNotEmpty(params)) {
             params.forEach((k, v) -> {
+                and();
                 if (StringUtils.checkValNotNull(v)) {
-                    and().eq(k, v);
+                    eq(k, v);
+                } else {
+                    isNull(k);
                 }
             });
         }
@@ -141,10 +144,11 @@ public abstract class AbstractWrapper<T, R, This extends AbstractWrapper<T, R, T
      * @return 返回自身
      */
     @Override
-    public <V> This allEq(BiPredicate<R, V> filter, Map<R, V> params) {
-        if (null != params) {
+    public <V> This allEq(boolean condition, BiPredicate<R, V> filter, Map<R, V> params) {
+        if (condition && CollectionUtils.isNotEmpty(params)) {
             params.forEach((key, value) -> {
                 if (filter.test(key, value)) {
+                    and();
                     if (null == value) {
                         isNull(key);
                     } else {

+ 14 - 1
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/interfaces/Compare.java

@@ -52,7 +52,20 @@ public interface Compare<This, R> extends Serializable {
      * @param <V>    参数的value类型
      * @return 返回自身
      */
-    <V> This allEq(BiPredicate<R, V> filter, Map<R, V> params);
+    default <V> This allEq(BiPredicate<R, V> filter, Map<R, V> params) {
+        return allEq(true, filter, params);
+    }
+
+    /**
+     * TODO 待确定的多参数字段过滤
+     * 字段过滤接口,传入多参数时允许对参数进行过滤
+     *
+     * @param filter 返回 true 来允许字段传入 条件中
+     * @param params 参数
+     * @param <V>    参数的value类型
+     * @return 返回自身
+     */
+    <V> This allEq(boolean condition, BiPredicate<R, V> filter, Map<R, V> params);
 
     /**
      * 等于 =