Bläddra i källkod

wrapper 支持 clear

miemie 5 år sedan
förälder
incheckning
3e4220aa73

+ 7 - 0
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/AbstractLambdaWrapper.java

@@ -97,4 +97,11 @@ public abstract class AbstractLambdaWrapper<T, Children extends AbstractLambdaWr
             columnMap = LambdaUtils.getColumnMap(entityClass);
         }
     }
+
+    @Override
+    public void clear() {
+        super.clear();
+        initColumnMap = false;
+        columnMap = null;
+    }
 }

+ 12 - 0
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/AbstractWrapper.java

@@ -441,6 +441,18 @@ public abstract class AbstractWrapper<T, R, Children extends AbstractWrapper<T,
         sqlFirst = SharedString.emptyString();
     }
 
+    @Override
+    public void clear() {
+        entity = null;
+        entityClass = null;
+        paramNameSeq.set(0);
+        paramNameValuePairs.clear();
+        expression.clear();
+        lastSql.clear();
+        sqlComment.clear();
+        sqlFirst.clear();
+    }
+
     /**
      * 对sql片段进行组装
      *

+ 9 - 0
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/SharedString.java

@@ -47,4 +47,13 @@ public class SharedString implements Serializable {
     public static SharedString emptyString() {
         return new SharedString(StringPool.EMPTY);
     }
+
+    /**
+     * 条件清空
+     *
+     * @since 3.3.1
+     */
+    public void clear() {
+        stringValue = StringPool.EMPTY;
+    }
 }

+ 7 - 0
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/Wrapper.java

@@ -170,4 +170,11 @@ public abstract class Wrapper<T> implements ISqlSegment {
     public String getTargetSql() {
         return getSqlSegment().replaceAll("#\\{.+?}", "?");
     }
+
+    /**
+     * 条件清空
+     *
+     * @since 3.3.1
+     */
+    abstract public void clear();
 }

+ 8 - 0
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/segments/AbstractISegmentList.java

@@ -112,4 +112,12 @@ public abstract class AbstractISegmentList extends ArrayList<ISqlSegment> implem
      * @return sqlSegment
      */
     protected abstract String childrenSqlSegment();
+
+    @Override
+    public void clear() {
+        super.clear();
+        lastValue = null;
+        sqlSegment = EMPTY;
+        cacheSqlSegment = true;
+    }
 }

+ 12 - 0
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/segments/MergeSegments.java

@@ -73,4 +73,16 @@ public class MergeSegments implements ISqlSegment {
         }
         return sqlSegment;
     }
+
+    /**
+     * 清理
+     *
+     * @since 3.3.1
+     */
+    public void clear() {
+        normal.clear();
+        groupBy.clear();
+        having.clear();
+        orderBy.clear();
+    }
 }

+ 7 - 0
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/segments/NormalSegmentList.java

@@ -92,4 +92,11 @@ public class NormalSegmentList extends AbstractISegmentList {
         final String str = this.stream().map(ISqlSegment::getSqlSegment).collect(Collectors.joining(SPACE));
         return (LEFT_BRACKET + str + RIGHT_BRACKET);
     }
+
+    @Override
+    public void clear() {
+        super.clear();
+        flushLastValue = true;
+        executeNot = true;
+    }
 }

+ 5 - 0
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/Wrappers.java

@@ -235,5 +235,10 @@ public final class Wrappers {
         protected EmptyWrapper<T> instance() {
             throw new UnsupportedOperationException();
         }
+
+        @Override
+        public void clear() {
+            throw new UnsupportedOperationException();
+        }
     }
 }