miemie %!s(int64=6) %!d(string=hai) anos
pai
achega
430194bdea

+ 22 - 38
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/AbstractWrapper.java

@@ -15,30 +15,13 @@
  */
 package com.baomidou.mybatisplus.core.conditions;
 
-import static com.baomidou.mybatisplus.core.enums.SqlKeyword.AND;
-import static com.baomidou.mybatisplus.core.enums.SqlKeyword.ASC;
-import static com.baomidou.mybatisplus.core.enums.SqlKeyword.BETWEEN;
-import static com.baomidou.mybatisplus.core.enums.SqlKeyword.DESC;
-import static com.baomidou.mybatisplus.core.enums.SqlKeyword.EQ;
-import static com.baomidou.mybatisplus.core.enums.SqlKeyword.EXISTS;
-import static com.baomidou.mybatisplus.core.enums.SqlKeyword.GE;
-import static com.baomidou.mybatisplus.core.enums.SqlKeyword.GROUP_BY;
-import static com.baomidou.mybatisplus.core.enums.SqlKeyword.GT;
-import static com.baomidou.mybatisplus.core.enums.SqlKeyword.HAVING;
-import static com.baomidou.mybatisplus.core.enums.SqlKeyword.IN;
-import static com.baomidou.mybatisplus.core.enums.SqlKeyword.IS_NOT_NULL;
-import static com.baomidou.mybatisplus.core.enums.SqlKeyword.IS_NULL;
-import static com.baomidou.mybatisplus.core.enums.SqlKeyword.LE;
-import static com.baomidou.mybatisplus.core.enums.SqlKeyword.LIKE;
-import static com.baomidou.mybatisplus.core.enums.SqlKeyword.LT;
-import static com.baomidou.mybatisplus.core.enums.SqlKeyword.NE;
-import static com.baomidou.mybatisplus.core.enums.SqlKeyword.NOT;
-import static com.baomidou.mybatisplus.core.enums.SqlKeyword.OR;
-import static com.baomidou.mybatisplus.core.enums.SqlKeyword.ORDER_BY;
-import static com.baomidou.mybatisplus.core.enums.WrapperKeyword.APPLY;
-import static com.baomidou.mybatisplus.core.enums.WrapperKeyword.LEFT_BRACKET;
-import static com.baomidou.mybatisplus.core.enums.WrapperKeyword.RIGHT_BRACKET;
-import static java.util.stream.Collectors.joining;
+import com.baomidou.mybatisplus.core.conditions.interfaces.Compare;
+import com.baomidou.mybatisplus.core.conditions.interfaces.Func;
+import com.baomidou.mybatisplus.core.conditions.interfaces.Join;
+import com.baomidou.mybatisplus.core.conditions.interfaces.Nested;
+import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments;
+import com.baomidou.mybatisplus.core.enums.SqlKeyword;
+import com.baomidou.mybatisplus.core.toolkit.*;
 
 import java.util.Arrays;
 import java.util.Collection;
@@ -48,18 +31,9 @@ import java.util.concurrent.atomic.AtomicInteger;
 import java.util.function.BiPredicate;
 import java.util.function.Function;
 
-import com.baomidou.mybatisplus.core.conditions.interfaces.Compare;
-import com.baomidou.mybatisplus.core.conditions.interfaces.Func;
-import com.baomidou.mybatisplus.core.conditions.interfaces.Join;
-import com.baomidou.mybatisplus.core.conditions.interfaces.Nested;
-import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments;
-import com.baomidou.mybatisplus.core.enums.SqlKeyword;
-import com.baomidou.mybatisplus.core.toolkit.ArrayUtils;
-import com.baomidou.mybatisplus.core.toolkit.Assert;
-import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
-import com.baomidou.mybatisplus.core.toolkit.Constants;
-import com.baomidou.mybatisplus.core.toolkit.StringPool;
-import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import static com.baomidou.mybatisplus.core.enums.SqlKeyword.*;
+import static com.baomidou.mybatisplus.core.enums.WrapperKeyword.*;
+import static java.util.stream.Collectors.joining;
 
 
 /**
@@ -108,12 +82,22 @@ public abstract class AbstractWrapper<T, R, This extends AbstractWrapper<T, R, T
     }
 
     public This setEntity(T entity) {
-        Assert.notNull(entity, "entity is not null");
+        Assert.notNull(entity, "entity must not null");
         this.entity = entity;
-        this.entityClass = (Class<T>) entity.getClass();
+        this.initEntityClass();
         return typedThis;
     }
 
+    protected void initEntityClass() {
+        if (this.entity != null) {
+            this.entityClass = (Class<T>) entity.getClass();
+        }
+    }
+
+    protected void checkEntityClass() {
+        Assert.notNull(entityClass, "entityClass must not null,please set entity before use this method!");
+    }
+
     @Override
     public This allEq(boolean condition, Map<R, Object> params, boolean null2IsNull) {
         if (condition && CollectionUtils.isNotEmpty(params)) {

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

@@ -15,14 +15,6 @@
  */
 package com.baomidou.mybatisplus.core.conditions.query;
 
-import static java.util.stream.Collectors.joining;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicInteger;
-
 import com.baomidou.mybatisplus.core.conditions.AbstractLambdaWrapper;
 import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments;
 import com.baomidou.mybatisplus.core.toolkit.Assert;
@@ -32,6 +24,14 @@ import com.baomidou.mybatisplus.core.toolkit.TableInfoHelper;
 import com.baomidou.mybatisplus.core.toolkit.sql.SqlUtils;
 import com.baomidou.mybatisplus.core.toolkit.support.Property;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import static java.util.stream.Collectors.joining;
+
 /**
  * <p>
  * Lambda 语法使用 Wrapper
@@ -54,23 +54,23 @@ public class LambdaQueryWrapper<T> extends AbstractLambdaWrapper<T, LambdaQueryW
     private List<String> excludeColumn = new ArrayList<>();
 
     public LambdaQueryWrapper() {
-        // TO DO NOTHING
+        this(null);
     }
 
     public LambdaQueryWrapper(T entity) {
         this.entity = entity;
+        this.initEntityClass();
+        this.initNeed();
     }
 
     @SuppressWarnings(value = "unchecked")
-    public LambdaQueryWrapper(T entity, AtomicInteger paramNameSeq, Map<String, Object> paramNameValuePairs,
-                              MergeSegments mergeSegments) {
+    LambdaQueryWrapper(T entity, AtomicInteger paramNameSeq, Map<String, Object> paramNameValuePairs,
+                       MergeSegments mergeSegments) {
         this.entity = entity;
-        if (entity != null) {
-            this.entityClass = (Class<T>) entity.getClass();
-        }
         this.paramNameSeq = paramNameSeq;
         this.paramNameValuePairs = paramNameValuePairs;
         this.expression = mergeSegments;
+        this.initEntityClass();
     }
 
     @Override
@@ -110,9 +110,10 @@ public class LambdaQueryWrapper<T> extends AbstractLambdaWrapper<T, LambdaQueryW
      */
     @SafeVarargs
     public final LambdaQueryWrapper<T> excludeColumns(Class<T> entityClass, Property<T, ?>... excludeColumns) {
-        Assert.notNull(entityClass, "entityClass is not null");
+        this.checkEntityClass();
         Assert.notEmpty(excludeColumns, "excludeColumns is not empty");
         this.entityClass = entityClass;
+        //todo
         for (Property<T, ?> column : excludeColumns) {
             excludeColumn.add(this.columnToString(column));
         }
@@ -129,8 +130,8 @@ public class LambdaQueryWrapper<T> extends AbstractLambdaWrapper<T, LambdaQueryW
     @SafeVarargs
     @SuppressWarnings(value = "unchecked")
     public final LambdaQueryWrapper<T> excludeColumns(Property<T, ?>... excludeColumns) {
-        Assert.notNull(entity, "Unable to find entity type, please use method `excludeColumns(Class<T> entityClass, String... excludeColumns)`");
-        return excludeColumns((Class<T>) entity.getClass(), excludeColumns);
+        Assert.notNull(entityClass, "Unable to find entity type, please use method `excludeColumns(Class<T> entityClass, String... excludeColumns)`");
+        return excludeColumns(entityClass, excludeColumns);
     }
 
     @Override

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

@@ -15,11 +15,6 @@
  */
 package com.baomidou.mybatisplus.core.conditions.query;
 
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicInteger;
-
 import com.baomidou.mybatisplus.core.conditions.AbstractWrapper;
 import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments;
 import com.baomidou.mybatisplus.core.toolkit.ArrayUtils;
@@ -28,6 +23,11 @@ import com.baomidou.mybatisplus.core.toolkit.StringPool;
 import com.baomidou.mybatisplus.core.toolkit.TableInfoHelper;
 import com.baomidou.mybatisplus.core.toolkit.sql.SqlUtils;
 
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
+
 /**
  * <p>
  * Entity 对象封装操作类
@@ -51,7 +51,7 @@ public class QueryWrapper<T> extends AbstractWrapper<T, String, QueryWrapper<T>>
 
 
     public QueryWrapper() {
-        this(null, null);
+        this(null);
     }
 
     public QueryWrapper(T entity) {
@@ -61,6 +61,7 @@ public class QueryWrapper<T> extends AbstractWrapper<T, String, QueryWrapper<T>>
     public QueryWrapper(T entity, String... column) {
         this.sqlSelect = column;
         this.entity = entity;
+        this.initEntityClass();
         this.initNeed();
     }
 
@@ -71,6 +72,7 @@ public class QueryWrapper<T> extends AbstractWrapper<T, String, QueryWrapper<T>>
         this.paramNameSeq = paramNameSeq;
         this.paramNameValuePairs = paramNameValuePairs;
         this.expression = mergeSegments;
+        this.initEntityClass();
     }
 
     @Override
@@ -102,7 +104,7 @@ public class QueryWrapper<T> extends AbstractWrapper<T, String, QueryWrapper<T>>
      * @param excludeColumns 排除字段列表
      */
     public QueryWrapper<T> excludeColumns(Class<T> entityClass, String... excludeColumns) {
-        Assert.notNull(entityClass, "entityClass is not null");
+        this.checkEntityClass();
         Assert.notEmpty(excludeColumns, "excludeColumns is not empty");
         this.excludeColumns = excludeColumns;
         this.entityClass = entityClass;