24282 1 年之前
父节点
当前提交
d879d21461
共有 1 个文件被更改,包括 193 次插入2 次删除
  1. 193 2
      sd-framework/src/main/java/com/sd/framework/util/sql/Where.java

+ 193 - 2
sd-framework/src/main/java/com/sd/framework/util/sql/Where.java

@@ -64,6 +64,17 @@ public class Where<T> extends AbstractWrapper<T, String, Where<T>> {
     }
     }
 
 
     /**
     /**
+     * 分组
+     */
+    public <K, V> Where<T> groupBy(SFunction<K, V> function) {
+        return groupBy(sql.getSqlFieldName(function));
+    }
+
+    public <K, V> Where<T> groupBy(String alias, SFunction<K, V> function) {
+        return groupBy(sql.getSqlFieldName(alias, function));
+    }
+
+    /**
      * between
      * between
      */
      */
     public <K, V> Where<T> between(SFunction<K, V> function, Object val1, Object val2) {
     public <K, V> Where<T> between(SFunction<K, V> function, Object val1, Object val2) {
@@ -74,6 +85,15 @@ public class Where<T> extends AbstractWrapper<T, String, Where<T>> {
         return between(sql.getSqlFieldName(alias, function), val1, val2);
         return between(sql.getSqlFieldName(alias, function), val1, val2);
     }
     }
 
 
+    public <K, V> Where<T> between(boolean condition, SFunction<K, V> function, Object val1, Object val2) {
+        return between(condition, sql.getSqlFieldName(function), val1, val2);
+    }
+
+    public <K, V> Where<T> between(boolean condition, String alias, SFunction<K, V> function, Object val1, Object val2) {
+        return between(condition, sql.getSqlFieldName(alias, function), val1, val2);
+    }
+
+    @Override
     public Where<T> between(String sqlFieldName, Object val1, Object val2) {
     public Where<T> between(String sqlFieldName, Object val1, Object val2) {
         return between(ObjectUtil.isAllNotEmpty(val1, val2), sqlFieldName, val1, val2);
         return between(ObjectUtil.isAllNotEmpty(val1, val2), sqlFieldName, val1, val2);
     }
     }
@@ -89,6 +109,15 @@ public class Where<T> extends AbstractWrapper<T, String, Where<T>> {
         return eq(sql.getSqlFieldName(alias, function), value);
         return eq(sql.getSqlFieldName(alias, function), value);
     }
     }
 
 
+    public <K, V> Where<T> eq(boolean condition, SFunction<K, V> function, Object value) {
+        return eq(condition, sql.getSqlFieldName(function), value);
+    }
+
+    public <K, V> Where<T> eq(boolean condition, String alias, SFunction<K, V> function, Object value) {
+        return eq(condition, sql.getSqlFieldName(alias, function), value);
+    }
+
+    @Override
     public Where<T> eq(String sqlFieldName, Object value) {
     public Where<T> eq(String sqlFieldName, Object value) {
         return eq(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
         return eq(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
     }
     }
@@ -104,6 +133,15 @@ public class Where<T> extends AbstractWrapper<T, String, Where<T>> {
         return ne(sql.getSqlFieldName(alias, function), value);
         return ne(sql.getSqlFieldName(alias, function), value);
     }
     }
 
 
+    public <K, V> Where<T> ne(boolean condition, SFunction<K, V> function, Object value) {
+        return ne(condition, sql.getSqlFieldName(function), value);
+    }
+
+    public <K, V> Where<T> ne(boolean condition, String alias, SFunction<K, V> function, Object value) {
+        return ne(condition, sql.getSqlFieldName(alias, function), value);
+    }
+
+    @Override
     public Where<T> ne(String sqlFieldName, Object value) {
     public Where<T> ne(String sqlFieldName, Object value) {
         return ne(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
         return ne(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
     }
     }
@@ -119,6 +157,15 @@ public class Where<T> extends AbstractWrapper<T, String, Where<T>> {
         return ge(sql.getSqlFieldName(alias, function), value);
         return ge(sql.getSqlFieldName(alias, function), value);
     }
     }
 
 
+    public <K, V> Where<T> ge(boolean condition, SFunction<K, V> function, Object value) {
+        return ge(condition, sql.getSqlFieldName(function), value);
+    }
+
+    public <K, V> Where<T> ge(boolean condition, String alias, SFunction<K, V> function, Object value) {
+        return ge(condition, sql.getSqlFieldName(alias, function), value);
+    }
+
+    @Override
     public Where<T> ge(String sqlFieldName, Object value) {
     public Where<T> ge(String sqlFieldName, Object value) {
         return ge(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
         return ge(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
     }
     }
@@ -134,6 +181,15 @@ public class Where<T> extends AbstractWrapper<T, String, Where<T>> {
         return gt(sql.getSqlFieldName(alias, function), value);
         return gt(sql.getSqlFieldName(alias, function), value);
     }
     }
 
 
+    public <K, V> Where<T> gt(boolean condition, SFunction<K, V> function, Object value) {
+        return gt(condition, sql.getSqlFieldName(function), value);
+    }
+
+    public <K, V> Where<T> gt(boolean condition, String alias, SFunction<K, V> function, Object value) {
+        return gt(condition, sql.getSqlFieldName(alias, function), value);
+    }
+
+    @Override
     public Where<T> gt(String sqlFieldName, Object value) {
     public Where<T> gt(String sqlFieldName, Object value) {
         return gt(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
         return gt(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
     }
     }
@@ -149,6 +205,15 @@ public class Where<T> extends AbstractWrapper<T, String, Where<T>> {
         return le(sql.getSqlFieldName(alias, function), value);
         return le(sql.getSqlFieldName(alias, function), value);
     }
     }
 
 
+    public <K, V> Where<T> le(boolean condition, SFunction<K, V> function, Object value) {
+        return le(condition, sql.getSqlFieldName(function), value);
+    }
+
+    public <K, V> Where<T> le(boolean condition, String alias, SFunction<K, V> function, Object value) {
+        return le(condition, sql.getSqlFieldName(alias, function), value);
+    }
+
+    @Override
     public Where<T> le(String sqlFieldName, Object value) {
     public Where<T> le(String sqlFieldName, Object value) {
         return le(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
         return le(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
     }
     }
@@ -164,6 +229,15 @@ public class Where<T> extends AbstractWrapper<T, String, Where<T>> {
         return lt(sql.getSqlFieldName(alias, function), value);
         return lt(sql.getSqlFieldName(alias, function), value);
     }
     }
 
 
+    public <K, V> Where<T> lt(boolean condition, SFunction<K, V> function, Object value) {
+        return lt(condition, sql.getSqlFieldName(function), value);
+    }
+
+    public <K, V> Where<T> lt(boolean condition, String alias, SFunction<K, V> function, Object value) {
+        return lt(condition, sql.getSqlFieldName(alias, function), value);
+    }
+
+    @Override
     public Where<T> lt(String sqlFieldName, Object value) {
     public Where<T> lt(String sqlFieldName, Object value) {
         return lt(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
         return lt(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
     }
     }
@@ -179,6 +253,15 @@ public class Where<T> extends AbstractWrapper<T, String, Where<T>> {
         return like(sql.getSqlFieldName(alias, function), value);
         return like(sql.getSqlFieldName(alias, function), value);
     }
     }
 
 
+    public <K, V> Where<T> like(boolean condition, SFunction<K, V> function, Object value) {
+        return like(condition, sql.getSqlFieldName(function), value);
+    }
+
+    public <K, V> Where<T> like(boolean condition, String alias, SFunction<K, V> function, Object value) {
+        return like(condition, sql.getSqlFieldName(alias, function), value);
+    }
+
+    @Override
     public Where<T> like(String sqlFieldName, Object value) {
     public Where<T> like(String sqlFieldName, Object value) {
         return apply(ObjectUtil.isNotEmpty(value), "INSTR(" + sqlFieldName + ", {0}) > 0", value);
         return apply(ObjectUtil.isNotEmpty(value), "INSTR(" + sqlFieldName + ", {0}) > 0", value);
     }
     }
@@ -194,6 +277,15 @@ public class Where<T> extends AbstractWrapper<T, String, Where<T>> {
         return notLike(sql.getSqlFieldName(alias, function), value);
         return notLike(sql.getSqlFieldName(alias, function), value);
     }
     }
 
 
+    public <K, V> Where<T> notLike(boolean condition, SFunction<K, V> function, Object value) {
+        return notLike(condition, sql.getSqlFieldName(function), value);
+    }
+
+    public <K, V> Where<T> notLike(boolean condition, String alias, SFunction<K, V> function, Object value) {
+        return notLike(condition, sql.getSqlFieldName(alias, function), value);
+    }
+
+    @Override
     public Where<T> notLike(String sqlFieldName, Object value) {
     public Where<T> notLike(String sqlFieldName, Object value) {
         return notLike(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
         return notLike(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
     }
     }
@@ -209,6 +301,15 @@ public class Where<T> extends AbstractWrapper<T, String, Where<T>> {
         return likeLeft(sql.getSqlFieldName(alias, function), value);
         return likeLeft(sql.getSqlFieldName(alias, function), value);
     }
     }
 
 
+    public <K, V> Where<T> likeLeft(boolean condition, SFunction<K, V> function, Object value) {
+        return likeLeft(condition, sql.getSqlFieldName(function), value);
+    }
+
+    public <K, V> Where<T> likeLeft(boolean condition, String alias, SFunction<K, V> function, Object value) {
+        return likeLeft(condition, sql.getSqlFieldName(alias, function), value);
+    }
+
+    @Override
     public Where<T> likeLeft(String sqlFieldName, Object value) {
     public Where<T> likeLeft(String sqlFieldName, Object value) {
         return likeLeft(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
         return likeLeft(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
     }
     }
@@ -224,6 +325,15 @@ public class Where<T> extends AbstractWrapper<T, String, Where<T>> {
         return likeRight(sql.getSqlFieldName(alias, function), value);
         return likeRight(sql.getSqlFieldName(alias, function), value);
     }
     }
 
 
+    public <K, V> Where<T> likeRight(boolean condition, SFunction<K, V> function, Object value) {
+        return likeRight(condition, sql.getSqlFieldName(function), value);
+    }
+
+    public <K, V> Where<T> likeRight(boolean condition, String alias, SFunction<K, V> function, Object value) {
+        return likeRight(condition, sql.getSqlFieldName(alias, function), value);
+    }
+
+    @Override
     public Where<T> likeRight(String sqlFieldName, Object value) {
     public Where<T> likeRight(String sqlFieldName, Object value) {
         return likeRight(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
         return likeRight(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
     }
     }
@@ -247,10 +357,28 @@ public class Where<T> extends AbstractWrapper<T, String, Where<T>> {
         return in(sql.getSqlFieldName(alias, function), value);
         return in(sql.getSqlFieldName(alias, function), value);
     }
     }
 
 
+    public <K, V> Where<T> in(boolean condition, SFunction<K, V> function, Collection<?> value) {
+        return in(condition, sql.getSqlFieldName(function), value);
+    }
+
+    public <K, V> Where<T> in(boolean condition, String alias, SFunction<K, V> function, Collection<?> value) {
+        return in(condition, sql.getSqlFieldName(alias, function), value);
+    }
+
+    public <K, V> Where<T> in(boolean condition, SFunction<K, V> function, Object... value) {
+        return in(condition, sql.getSqlFieldName(function), value);
+    }
+
+    public <K, V> Where<T> in(boolean condition, String alias, SFunction<K, V> function, Object... value) {
+        return in(condition, sql.getSqlFieldName(alias, function), value);
+    }
+
+    @Override
     public Where<T> in(String sqlFieldName, Collection<?> value) {
     public Where<T> in(String sqlFieldName, Collection<?> value) {
         return in(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
         return in(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
     }
     }
 
 
+    @Override
     public Where<T> in(String sqlFieldName, Object... value) {
     public Where<T> in(String sqlFieldName, Object... value) {
         return in(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
         return in(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
     }
     }
@@ -274,15 +402,71 @@ public class Where<T> extends AbstractWrapper<T, String, Where<T>> {
         return notIn(sql.getSqlFieldName(alias, function), value);
         return notIn(sql.getSqlFieldName(alias, function), value);
     }
     }
 
 
+    public <K, V> Where<T> notIn(boolean condition, SFunction<K, V> function, Collection<?> value) {
+        return notIn(condition, sql.getSqlFieldName(function), value);
+    }
+
+    public <K, V> Where<T> notIn(boolean condition, String alias, SFunction<K, V> function, Collection<?> value) {
+        return notIn(condition, sql.getSqlFieldName(alias, function), value);
+    }
+
+    public <K, V> Where<T> notIn(boolean condition, SFunction<K, V> function, Object... value) {
+        return notIn(condition, sql.getSqlFieldName(function), value);
+    }
+
+    public <K, V> Where<T> notIn(boolean condition, String alias, SFunction<K, V> function, Object... value) {
+        return notIn(condition, sql.getSqlFieldName(alias, function), value);
+    }
+
+    @Override
     public Where<T> notIn(String sqlFieldName, Collection<?> value) {
     public Where<T> notIn(String sqlFieldName, Collection<?> value) {
         return notIn(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
         return notIn(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
     }
     }
 
 
+    @Override
     public Where<T> notIn(String sqlFieldName, Object... value) {
     public Where<T> notIn(String sqlFieldName, Object... value) {
         return notIn(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
         return notIn(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
     }
     }
 
 
     /**
     /**
+     * isNull
+     */
+    public <K, V> Where<T> isNull(SFunction<K, V> function) {
+        return isNull(sql.getSqlFieldName(function));
+    }
+
+    public <K, V> Where<T> isNull(String alias, SFunction<K, V> function) {
+        return isNull(sql.getSqlFieldName(alias, function));
+    }
+
+    public <K, V> Where<T> isNull(boolean condition, SFunction<K, V> function) {
+        return isNull(condition, sql.getSqlFieldName(function));
+    }
+
+    public <K, V> Where<T> isNull(boolean condition, String alias, SFunction<K, V> function) {
+        return isNull(condition, sql.getSqlFieldName(alias, function));
+    }
+
+    /**
+     * isNotNull
+     */
+    public <K, V> Where<T> isNotNull(SFunction<K, V> function) {
+        return isNotNull(sql.getSqlFieldName(function));
+    }
+
+    public <K, V> Where<T> isNotNull(String alias, SFunction<K, V> function) {
+        return isNotNull(sql.getSqlFieldName(alias, function));
+    }
+
+    public <K, V> Where<T> isNotNull(boolean condition, SFunction<K, V> function) {
+        return isNotNull(condition, sql.getSqlFieldName(function));
+    }
+
+    public <K, V> Where<T> isNotNull(boolean condition, String alias, SFunction<K, V> function) {
+        return isNotNull(condition, sql.getSqlFieldName(alias, function));
+    }
+
+    /**
      * findInSet
      * findInSet
      */
      */
     public <K, V> Where<T> findInSet(SFunction<K, V> function, Object value) {
     public <K, V> Where<T> findInSet(SFunction<K, V> function, Object value) {
@@ -293,6 +477,14 @@ public class Where<T> extends AbstractWrapper<T, String, Where<T>> {
         return apply(ObjectUtil.isNotEmpty(value), "FIND_IN_SET({0}, " + sql.getSqlFieldName(alias, function) + ")", value);
         return apply(ObjectUtil.isNotEmpty(value), "FIND_IN_SET({0}, " + sql.getSqlFieldName(alias, function) + ")", value);
     }
     }
 
 
+    public <K, V> Where<T> findInSet(boolean condition, SFunction<K, V> function, Object value) {
+        return apply(condition, "FIND_IN_SET({0}, " + sql.getSqlFieldName(function) + ")", value);
+    }
+
+    public <K, V> Where<T> findInSet(boolean condition, String alias, SFunction<K, V> function, Object value) {
+        return apply(condition, "FIND_IN_SET({0}, " + sql.getSqlFieldName(alias, function) + ")", value);
+    }
+
     public List<T> list() {
     public List<T> list() {
         List<Map<String, Object>> list = Sql.mapper.list(sql.getSql(), this);
         List<Map<String, Object>> list = Sql.mapper.list(sql.getSql(), this);
         return BeanUtil.copyToList(list, sql.resultCls);
         return BeanUtil.copyToList(list, sql.resultCls);
@@ -300,7 +492,6 @@ public class Where<T> extends AbstractWrapper<T, String, Where<T>> {
 
 
     public Page<T> page(Page<?> page) {
     public Page<T> page(Page<?> page) {
         Page<Map<String, Object>> tempResult = Sql.mapper.page(sql.getSql(), page, this);
         Page<Map<String, Object>> tempResult = Sql.mapper.page(sql.getSql(), page, this);
-
         Page<T> result = new Page<>();
         Page<T> result = new Page<>();
         result.setRecords(BeanUtil.copyToList(tempResult.getRecords(), sql.resultCls));
         result.setRecords(BeanUtil.copyToList(tempResult.getRecords(), sql.resultCls));
         result.setPages(tempResult.getPages());
         result.setPages(tempResult.getPages());
@@ -327,4 +518,4 @@ public class Where<T> extends AbstractWrapper<T, String, Where<T>> {
         return list().stream().collect(Collectors.groupingBy(kFun));
         return list().stream().collect(Collectors.groupingBy(kFun));
     }
     }
 
 
-}
+}