24282 1 жил өмнө
parent
commit
5e9540ba4e

+ 55 - 0
sd-framework/src/main/java/com/sd/framework/util/sql/Where.java

@@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.AbstractWrapper;
 import com.baomidou.mybatisplus.core.conditions.SharedString;
 import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments;
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
 import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 
@@ -467,6 +468,60 @@ public class Where<T> extends AbstractWrapper<T, String, Where<T>> {
     }
 
     /**
+     * isEmpty
+     */
+    public <K, V> Where<T> isEmpty(SFunction<K, V> function) {
+        String sqlFieldName = sql.getSqlFieldName(function);
+        return and(q -> isNull(sqlFieldName).or().eq(true, sqlFieldName, StringPool.EMPTY));
+    }
+
+    public <K, V> Where<T> isEmpty(String alias, SFunction<K, V> function) {
+        String sqlFieldName = sql.getSqlFieldName(alias, function);
+        return and(q -> isNull(sqlFieldName).or().eq(true, sqlFieldName, StringPool.EMPTY));
+    }
+
+    public <K, V> Where<T> isEmpty(boolean condition, SFunction<K, V> function) {
+        if (!condition) {
+            return this;
+        }
+        return isEmpty(function);
+    }
+
+    public <K, V> Where<T> isEmpty(boolean condition, String alias, SFunction<K, V> function) {
+        if (!condition) {
+            return this;
+        }
+        return isEmpty(alias, function);
+    }
+
+    /**
+     * isNotEmpty
+     */
+    public <K, V> Where<T> isNotEmpty(SFunction<K, V> function) {
+        String sqlFieldName = sql.getSqlFieldName(function);
+        return and(q -> isNotNull(sqlFieldName).ne(true, sqlFieldName, StringPool.EMPTY));
+    }
+
+    public <K, V> Where<T> isNotEmpty(String alias, SFunction<K, V> function) {
+        String sqlFieldName = sql.getSqlFieldName(alias, function);
+        return and(q -> isNotNull(sqlFieldName).ne(true, sqlFieldName, StringPool.EMPTY));
+    }
+
+    public <K, V> Where<T> isNotEmpty(boolean condition, SFunction<K, V> function) {
+        if (!condition) {
+            return this;
+        }
+        return isNotEmpty(function);
+    }
+
+    public <K, V> Where<T> isNotEmpty(boolean condition, String alias, SFunction<K, V> function) {
+        if (!condition) {
+            return this;
+        }
+        return isNotEmpty(alias, function);
+    }
+
+    /**
      * findInSet
      */
     public <K, V> Where<T> findInSet(SFunction<K, V> function, Object value) {