Explorar o código

提取query类型的wrapper的部分方法到接口上

miemie %!s(int64=6) %!d(string=hai) anos
pai
achega
6492bcb2be

+ 3 - 3
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/query/SharedSqlSelect.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/SharedString.java

@@ -1,4 +1,4 @@
-package com.baomidou.mybatisplus.core.conditions.query;
+package com.baomidou.mybatisplus.core.conditions;
 
 import lombok.Data;
 
@@ -11,11 +11,11 @@ import java.io.Serializable;
  * @since 2018-11-20
  */
 @Data
-public class SharedSqlSelect implements Serializable {
+public class SharedString implements Serializable {
     private static final long serialVersionUID = -1536422416594422874L;
 
     /**
      * 查询字段
      */
-    private String sqlSelect;
+    private String stringValue;
 }

+ 2 - 9
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/Wrapper.java

@@ -15,8 +15,6 @@
  */
 package com.baomidou.mybatisplus.core.conditions;
 
-import java.util.Objects;
-
 import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments;
 import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
 import com.baomidou.mybatisplus.core.metadata.TableInfo;
@@ -25,6 +23,8 @@ import com.baomidou.mybatisplus.core.toolkit.ReflectionKit;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.TableInfoHelper;
 
+import java.util.Objects;
+
 /**
  * <p>
  * 条件构造抽象类
@@ -45,13 +45,6 @@ public abstract class Wrapper<T> implements ISqlSegment {
      */
     public abstract T getEntity();
 
-    /**
-     * 查询条件 SQL 片段(子类实现)
-     */
-    public String getSqlSelect() {
-        return null;
-    }
-
     /**
      * 更新 SQL 片段(子类实现)
      */

+ 11 - 6
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/query/LambdaQueryWrapper.java

@@ -16,6 +16,7 @@
 package com.baomidou.mybatisplus.core.conditions.query;
 
 import com.baomidou.mybatisplus.core.conditions.AbstractLambdaWrapper;
+import com.baomidou.mybatisplus.core.conditions.SharedString;
 import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments;
 import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
 import com.baomidou.mybatisplus.core.toolkit.ArrayUtils;
@@ -35,12 +36,13 @@ import java.util.function.Predicate;
  * @since 2017-05-26
  */
 @SuppressWarnings("serial")
-public class LambdaQueryWrapper<T> extends AbstractLambdaWrapper<T, LambdaQueryWrapper<T>> {
+public class LambdaQueryWrapper<T> extends AbstractLambdaWrapper<T, LambdaQueryWrapper<T>>
+    implements Query<LambdaQueryWrapper<T>, T, SFunction<T, ?>> {
 
     /**
      * 查询字段
      */
-    private SharedSqlSelect sqlSelect = new SharedSqlSelect();
+    private SharedString sqlSelect = new SharedString();
 
     public LambdaQueryWrapper() {
         this(null);
@@ -51,7 +53,7 @@ public class LambdaQueryWrapper<T> extends AbstractLambdaWrapper<T, LambdaQueryW
         super.initNeed();
     }
 
-    LambdaQueryWrapper(T entity, Class<T> entityClass, SharedSqlSelect sqlSelect, AtomicInteger paramNameSeq,
+    LambdaQueryWrapper(T entity, Class<T> entityClass, SharedString sqlSelect, AtomicInteger paramNameSeq,
                        Map<String, Object> paramNameValuePairs, MergeSegments mergeSegments) {
         super.setEntity(entity);
         this.paramNameSeq = paramNameSeq;
@@ -69,13 +71,15 @@ public class LambdaQueryWrapper<T> extends AbstractLambdaWrapper<T, LambdaQueryW
      * @param columns 查询字段
      */
     @SafeVarargs
+    @Override
     public final LambdaQueryWrapper<T> select(SFunction<T, ?>... columns) {
         if (ArrayUtils.isNotEmpty(columns)) {
-            this.sqlSelect.setSqlSelect(this.columnsToString(columns));
+            this.sqlSelect.setStringValue(this.columnsToString(columns));
         }
         return typedThis;
     }
 
+    @Override
     public LambdaQueryWrapper<T> select(Predicate<TableFieldInfo> predicate) {
         return select(entityClass, predicate);
     }
@@ -95,15 +99,16 @@ public class LambdaQueryWrapper<T> extends AbstractLambdaWrapper<T, LambdaQueryW
      * @param predicate 过滤方式
      * @return this
      */
+    @Override
     public LambdaQueryWrapper<T> select(Class<T> entityClass, Predicate<TableFieldInfo> predicate) {
         this.entityClass = entityClass;
-        this.sqlSelect.setSqlSelect(TableInfoHelper.getTableInfo(getCheckEntityClass()).chooseSelect(predicate));
+        this.sqlSelect.setStringValue(TableInfoHelper.getTableInfo(getCheckEntityClass()).chooseSelect(predicate));
         return typedThis;
     }
 
     @Override
     public String getSqlSelect() {
-        return sqlSelect.getSqlSelect();
+        return sqlSelect.getStringValue();
     }
 
     /**

+ 24 - 0
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/query/Query.java

@@ -0,0 +1,24 @@
+package com.baomidou.mybatisplus.core.conditions.query;
+
+import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
+
+import java.io.Serializable;
+import java.util.function.Predicate;
+
+/**
+ * @author miemie
+ * @since 2018-12-12
+ */
+public interface Query<This, T, R> extends Serializable {
+
+    This select(R... columns);
+
+    This select(Predicate<TableFieldInfo> predicate);
+
+    This select(Class<T> entityClass, Predicate<TableFieldInfo> predicate);
+
+    /**
+     * 查询条件 SQL 片段
+     */
+    String getSqlSelect();
+}

+ 10 - 5
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/query/QueryWrapper.java

@@ -16,6 +16,7 @@
 package com.baomidou.mybatisplus.core.conditions.query;
 
 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.metadata.TableFieldInfo;
 import com.baomidou.mybatisplus.core.toolkit.ArrayUtils;
@@ -35,12 +36,13 @@ import java.util.function.Predicate;
  * @since 2018-05-25
  */
 @SuppressWarnings("serial")
-public class QueryWrapper<T> extends AbstractWrapper<T, String, QueryWrapper<T>> {
+public class QueryWrapper<T> extends AbstractWrapper<T, String, QueryWrapper<T>>
+    implements Query<QueryWrapper<T>, T, String> {
 
     /**
      * 查询字段
      */
-    private SharedSqlSelect sqlSelect = new SharedSqlSelect();
+    private SharedString sqlSelect = new SharedString();
 
     public QueryWrapper() {
         this(null);
@@ -71,13 +73,15 @@ public class QueryWrapper<T> extends AbstractWrapper<T, String, QueryWrapper<T>>
         this.expression = mergeSegments;
     }
 
+    @Override
     public QueryWrapper<T> select(String... columns) {
         if (ArrayUtils.isNotEmpty(columns)) {
-            this.sqlSelect.setSqlSelect(String.join(StringPool.COMMA, columns));
+            this.sqlSelect.setStringValue(String.join(StringPool.COMMA, columns));
         }
         return typedThis;
     }
 
+    @Override
     public QueryWrapper<T> select(Predicate<TableFieldInfo> predicate) {
         return select(entityClass, predicate);
     }
@@ -97,9 +101,10 @@ public class QueryWrapper<T> extends AbstractWrapper<T, String, QueryWrapper<T>>
      * @param predicate 过滤方式
      * @return this
      */
+    @Override
     public QueryWrapper<T> select(Class<T> entityClass, Predicate<TableFieldInfo> predicate) {
         this.entityClass = entityClass;
-        this.sqlSelect.setSqlSelect(TableInfoHelper.getTableInfo(getCheckEntityClass()).chooseSelect(predicate));
+        this.sqlSelect.setStringValue(TableInfoHelper.getTableInfo(getCheckEntityClass()).chooseSelect(predicate));
         return typedThis;
     }
 
@@ -114,7 +119,7 @@ public class QueryWrapper<T> extends AbstractWrapper<T, String, QueryWrapper<T>>
 
     @Override
     public String getSqlSelect() {
-        return sqlSelect.getSqlSelect();
+        return sqlSelect.getStringValue();
     }
 
     @Override