Jelajahi Sumber

发布 3.0.1-SNAPSHOT

hubin 7 tahun lalu
induk
melakukan
cc69bdf9cc

+ 12 - 23
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/MybatisAbstractSQL.java → mybatis-plus-adapter/src/main/java/com/baomidou/mybatisplus/mapper/MybatisAbstractSQL.java

@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.core.conditions;
+package com.baomidou.mybatisplus.mapper;
 
 import java.io.IOException;
 import java.io.Serializable;
@@ -22,7 +22,6 @@ import java.util.List;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
-import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 
 /**
@@ -34,7 +33,6 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils;
  * @since 2016-08-22
  */
 @Deprecated
-@SuppressWarnings("serial")
 public abstract class MybatisAbstractSQL<T> implements Serializable {
 
     private static final String AND = " AND ";
@@ -63,17 +61,17 @@ public abstract class MybatisAbstractSQL<T> implements Serializable {
     }
 
     public T OR() {
-        sql().lastList.add(OR);
+        sql().lastList.add(MybatisAbstractSQL.OR);
         return getSelf();
     }
 
     public T OR_NEW() {
-        sql().lastList.add(OR_NEW);
+        sql().lastList.add(MybatisAbstractSQL.OR_NEW);
         return getSelf();
     }
 
     public T AND() {
-        sql().lastList.add(AND);
+        sql().lastList.add(MybatisAbstractSQL.AND);
         return getSelf();
     }
 
@@ -92,7 +90,7 @@ public abstract class MybatisAbstractSQL<T> implements Serializable {
     }
 
     public T AND_NEW() {
-        sql().lastList.add(AND_NEW);
+        sql().lastList.add(MybatisAbstractSQL.AND_NEW);
         return getSelf();
     }
 
@@ -128,15 +126,6 @@ public abstract class MybatisAbstractSQL<T> implements Serializable {
         return sb.toString();
     }
 
-    /**
-     * 查看构造器where是否为空
-     *
-     * @return
-     */
-    public boolean isEmptyOfWhere() {
-        return CollectionUtils.isEmpty(sql().where);
-    }
-
     /**
      * SQL连接器
      */
@@ -182,10 +171,10 @@ public abstract class MybatisAbstractSQL<T> implements Serializable {
         List<String> lastList = new ArrayList<>();
 
         public SQLCondition() {
-            andOr.add(AND);
-            andOr.add(OR);
-            andOr.add(AND_NEW);
-            andOr.add(OR_NEW);
+            andOr.add(MybatisAbstractSQL.AND);
+            andOr.add(MybatisAbstractSQL.OR);
+            andOr.add(MybatisAbstractSQL.AND_NEW);
+            andOr.add(MybatisAbstractSQL.OR_NEW);
         }
 
         /**
@@ -248,9 +237,9 @@ public abstract class MybatisAbstractSQL<T> implements Serializable {
          * @return
          */
         private String buildSQL(SafeAppendable builder) {
-            sqlClause(builder, "WHERE", where, "(", ")", AND);
+            sqlClause(builder, "WHERE", where, "(", ")", MybatisAbstractSQL.AND);
             sqlClause(builder, "GROUP BY", groupBy, "", "", ", ");
-            sqlClause(builder, "HAVING", having, "(", ")", AND);
+            sqlClause(builder, "HAVING", having, "(", ")", MybatisAbstractSQL.AND);
             sqlClause(builder, "ORDER BY", orderBy, "", "", ", ");
             if (StringUtils.isNotEmpty(last)) {
                 builder.append(" ");
@@ -270,7 +259,7 @@ public abstract class MybatisAbstractSQL<T> implements Serializable {
          * @return true 嵌套
          */
         private boolean checkNest(String args) {
-            return PATTERN.matcher(args).matches();
+            return MybatisAbstractSQL.PATTERN.matcher(args).matches();
         }
     }
 }

+ 1 - 2
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/SqlPlus.java → mybatis-plus-adapter/src/main/java/com/baomidou/mybatisplus/mapper/SqlPlus.java

@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.core.conditions;
+package com.baomidou.mybatisplus.mapper;
 
 import java.util.Arrays;
 
@@ -28,7 +28,6 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils;
  * @since 2016-08-22
  */
 @Deprecated
-@SuppressWarnings("serial")
 public class SqlPlus extends MybatisAbstractSQL<SqlPlus> {
 
     private final String IS_NOT_NULL = " IS NOT NULL";

+ 7 - 28
mybatis-plus-adapter/src/main/java/com/baomidou/mybatisplus/mapper/Wrapper.java

@@ -22,7 +22,6 @@ import java.util.Iterator;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import com.baomidou.mybatisplus.core.conditions.SqlPlus;
 import com.baomidou.mybatisplus.core.enums.SqlLike;
 import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
 import com.baomidou.mybatisplus.core.toolkit.ArrayUtils;
@@ -90,24 +89,6 @@ public class Wrapper<T> extends com.baomidou.mybatisplus.core.conditions.Wrapper
         return null;
     }
 
-    /**
-     * 查看where构造是否为空
-     *
-     * @return
-     */
-    public boolean isEmptyOfWhere() {
-        return sql.isEmptyOfWhere();
-    }
-
-    /**
-     * 查看where构造是否不为空
-     *
-     * @return
-     */
-    public boolean isNotEmptyOfWhere() {
-        return !isEmptyOfWhere();
-    }
-
     @Override
     public String getSqlSelect() {
         return StringUtils.isEmpty(sqlSelect) ? null : SqlUtils.stripSqlInjection(sqlSelect);
@@ -139,7 +120,7 @@ public class Wrapper<T> extends com.baomidou.mybatisplus.core.conditions.Wrapper
                 builder.append(column);
             }
         }
-        this.sqlSelect = builder.toString();
+        sqlSelect = builder.toString();
         return this;
     }
 
@@ -339,7 +320,6 @@ public class Wrapper<T> extends com.baomidou.mybatisplus.core.conditions.Wrapper
      * @param params
      * @return
      */
-    @SuppressWarnings({"rawtypes", "unchecked"})
     public Wrapper<T> allEq(boolean condition, Map<String, Object> params) {
         if (condition && ObjectUtils.isNotEmpty(params)) {
             Iterator iterator = params.entrySet().iterator();
@@ -364,7 +344,6 @@ public class Wrapper<T> extends com.baomidou.mybatisplus.core.conditions.Wrapper
      * @param params
      * @return
      */
-    @SuppressWarnings({"rawtypes", "unchecked"})
     public Wrapper<T> allEq(Map<String, Object> params) {
         return allEq(true, params);
     }
@@ -1393,7 +1372,7 @@ public class Wrapper<T> extends com.baomidou.mybatisplus.core.conditions.Wrapper
             inSql.append("(");
             int size = value.size();
             for (int i = 0; i < size; i++) {
-                inSql.append(String.format(PLACE_HOLDER, i));
+                inSql.append(String.format(Wrapper.PLACE_HOLDER, i));
                 if (i + 1 < size) {
                     inSql.append(",");
                 }
@@ -1540,9 +1519,9 @@ public class Wrapper<T> extends com.baomidou.mybatisplus.core.conditions.Wrapper
         // #200
         if (ArrayUtils.isNotEmpty(params)) {
             for (int i = 0; i < params.length; ++i) {
-                String genParamName = MP_GENERAL_PARAMNAME + paramNameSeq.incrementAndGet();
-                sqlStr = sqlStr.replace(String.format(PLACE_HOLDER, i),
-                    String.format(MYBATIS_PLUS_TOKEN, getParamAlias(), genParamName));
+                String genParamName = Wrapper.MP_GENERAL_PARAMNAME + paramNameSeq.incrementAndGet();
+                sqlStr = sqlStr.replace(String.format(Wrapper.PLACE_HOLDER, i),
+                    String.format(Wrapper.MYBATIS_PLUS_TOKEN, getParamAlias(), genParamName));
                 paramNameValuePairs.put(genParamName, params[i]);
             }
         }
@@ -1558,7 +1537,7 @@ public class Wrapper<T> extends com.baomidou.mybatisplus.core.conditions.Wrapper
      * @return this
      */
     public Wrapper<T> isWhere(Boolean bool) {
-        this.isWhere = bool;
+        isWhere = bool;
         return this;
     }
 
@@ -1586,7 +1565,7 @@ public class Wrapper<T> extends com.baomidou.mybatisplus.core.conditions.Wrapper
     }
 
     public String getParamAlias() {
-        return StringUtils.isEmpty(paramAlias) ? DEFAULT_PARAM_ALIAS : paramAlias;
+        return StringUtils.isEmpty(paramAlias) ? Wrapper.DEFAULT_PARAM_ALIAS : paramAlias;
     }
 
     /**

+ 41 - 32
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/AbstractWrapper.java

@@ -15,6 +15,38 @@
  */
 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 java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
 import com.baomidou.mybatisplus.core.conditions.interfaces.Compare;
 import com.baomidou.mybatisplus.core.conditions.interfaces.Func;
 import com.baomidou.mybatisplus.core.conditions.interfaces.Join;
@@ -24,14 +56,6 @@ import com.baomidou.mybatisplus.core.toolkit.ArrayUtils;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 
-import java.io.Serializable;
-import java.util.*;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-
-import static com.baomidou.mybatisplus.core.enums.SqlKeyword.*;
-
 
 /**
  * <p>
@@ -53,7 +77,6 @@ public abstract class AbstractWrapper<T, R, This extends AbstractWrapper<T, R, T
      */
     private static final String PLACE_HOLDER = "{%s}";
     private static final String MYBATIS_PLUS_TOKEN = "#{%s.paramNameValuePairs.%s}";
-    @SuppressWarnings("unchecked")
     protected final This typedThis = (This) this;
     /**
      * 必要度量
@@ -68,23 +91,9 @@ public abstract class AbstractWrapper<T, R, This extends AbstractWrapper<T, R, T
     private List<ISqlSegment> expression = new ArrayList<>();
     private boolean didOrderBy = false;
 
-    /**
-     * 判断构造条件不为空
-     */
-    public boolean isNotEmptyOfWhere() {
-        return CollectionUtils.isNotEmpty(expression);
-    }
-
-    /**
-     * 判断构造条件为空
-     */
-    public boolean isEmptyOfWhere() {
-        return CollectionUtils.isEmpty(expression);
-    }
-
     @Override
     public T getEntity() {
-        return this.entity;
+        return entity;
     }
 
     public This setEntity(T entity) {
@@ -360,7 +369,7 @@ public abstract class AbstractWrapper<T, R, This extends AbstractWrapper<T, R, T
      * @return this
      */
     protected This addCondition(boolean condition, R column, SqlKeyword sqlKeyword, Object val) {
-        return doIt(condition, () -> columnToString(column), sqlKeyword, () -> this.formatSql("{0}", val));
+        return doIt(condition, () -> columnToString(column), sqlKeyword, () -> formatSql("{0}", val));
     }
 
     /**
@@ -373,7 +382,7 @@ public abstract class AbstractWrapper<T, R, This extends AbstractWrapper<T, R, T
      * @return this
      */
     protected This addNestedCondition(boolean condition, String val, SqlKeyword sqlKeyword) {
-        return doIt(condition, sqlKeyword, () -> this.formatSql("({0})", val));
+        return doIt(condition, sqlKeyword, () -> formatSql("({0})", val));
     }
 
     /**
@@ -431,9 +440,9 @@ public abstract class AbstractWrapper<T, R, This extends AbstractWrapper<T, R, T
         }
         if (ArrayUtils.isNotEmpty(params)) {
             for (int i = 0; i < params.length; ++i) {
-                String genParamName = MP_GENERAL_PARAMNAME + paramNameSeq.incrementAndGet();
-                sqlStr = sqlStr.replace(String.format(PLACE_HOLDER, i),
-                    String.format(MYBATIS_PLUS_TOKEN, getParamAlias(), genParamName));
+                String genParamName = AbstractWrapper.MP_GENERAL_PARAMNAME + paramNameSeq.incrementAndGet();
+                sqlStr = sqlStr.replace(String.format(AbstractWrapper.PLACE_HOLDER, i),
+                    String.format(AbstractWrapper.MYBATIS_PLUS_TOKEN, getParamAlias(), genParamName));
                 paramNameValuePairs.put(genParamName, params[i]);
             }
         }
@@ -456,8 +465,8 @@ public abstract class AbstractWrapper<T, R, This extends AbstractWrapper<T, R, T
      * 必要的初始化
      */
     protected void initNeed() {
-        this.paramNameSeq = new AtomicInteger(0);
-        this.paramNameValuePairs = new HashMap<>();
+        paramNameSeq = new AtomicInteger(0);
+        paramNameValuePairs = new HashMap<>();
     }
 
     /**
@@ -477,7 +486,7 @@ public abstract class AbstractWrapper<T, R, This extends AbstractWrapper<T, R, T
     }
 
     public String getParamAlias() {
-        return StringUtils.isEmpty(paramAlias) ? DEFAULT_PARAM_ALIAS : paramAlias;
+        return StringUtils.isEmpty(paramAlias) ? AbstractWrapper.DEFAULT_PARAM_ALIAS : paramAlias;
     }
 
     @Override

+ 15 - 16
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/injector/AbstractMethod.java

@@ -61,14 +61,14 @@ public abstract class AbstractMethod {
      * 注入自定义方法
      */
     public void inject(MapperBuilderAssistant builderAssistant, Class<?> mapperClass) {
-        this.configuration = builderAssistant.getConfiguration();
+        configuration = builderAssistant.getConfiguration();
         this.builderAssistant = builderAssistant;
-        this.languageDriver = configuration.getDefaultScriptingLanguageInstance();
+        languageDriver = configuration.getDefaultScriptingLanguageInstance();
         Class<?> modelClass = extractModelClass(mapperClass);
         if (null != modelClass) {
             // 注入自定义方法
             TableInfo tableInfo = TableInfoHelper.initTableInfo(builderAssistant, modelClass);
-            this.injectMappedStatement(mapperClass, modelClass, tableInfo);
+            injectMappedStatement(mapperClass, modelClass, tableInfo);
         }
     }
 
@@ -172,8 +172,8 @@ public abstract class AbstractMethod {
      * @return
      */
     protected String sqlWordConvert(String column) {
-        return this.getGlobalConfig().getDbConfig().getReservedWordsHandler()
-            .convert(this.getGlobalConfig().getDbConfig().getDbType(), column);
+        return getGlobalConfig().getDbConfig().getReservedWordsHandler()
+            .convert(getGlobalConfig().getDbConfig().getDbType(), column);
     }
 
     /**
@@ -227,7 +227,7 @@ public abstract class AbstractMethod {
             if (size >= 1) {
                 // 字段处理
                 columns.append(fieldList.stream().map(i -> {
-                    String v = this.sqlWordConvert(i.getColumn());
+                    String v = sqlWordConvert(i.getColumn());
                     if (i.isRelated()) {
                         v += (" AS " + i.getProperty());
                     }
@@ -300,7 +300,7 @@ public abstract class AbstractMethod {
         List<TableFieldInfo> fieldList = table.getFieldList();
         for (TableFieldInfo fieldInfo : fieldList) {
             where.append(convertIfTag(fieldInfo, "ew.", false))
-                .append(" AND ").append(this.sqlCondition(fieldInfo.getCondition(),
+                .append(" AND ").append(sqlCondition(fieldInfo.getCondition(),
                 fieldInfo.getColumn(), "ew." + fieldInfo.getEl()))
                 .append(convertIfTag(fieldInfo, true));
         }
@@ -344,7 +344,7 @@ public abstract class AbstractMethod {
                 return "";
             }
             // 查询策略,使用全局策略
-            fieldStrategy = this.getGlobalConfig().getDbConfig().getFieldStrategy();
+            fieldStrategy = getGlobalConfig().getDbConfig().getFieldStrategy();
         }
 
         // 关闭标签
@@ -414,15 +414,14 @@ public abstract class AbstractMethod {
         List<TableFieldInfo> fieldList = table.getFieldList();
         for (TableFieldInfo fieldInfo : fieldList) {
             where.append(convertIfTag(fieldInfo, "ew.entity.", false));
-            where.append(" AND ").append(this.sqlCondition(fieldInfo.getCondition(),
+            where.append(" AND ").append(sqlCondition(fieldInfo.getCondition(),
                 fieldInfo.getColumn(), "ew.entity." + fieldInfo.getEl()));
             where.append(convertIfTag(fieldInfo, true));
         }
         where.append("</if>");
-        where.append("<if test=\"ew!=null and ew.sqlSegment!=null and ew.notEmptyOfWhere\">${ew.sqlSegment}</if>");
+        where.append("<if test=\"ew.sqlSegment!=null\"> AND ${ew.sqlSegment}</if>");
         where.append("</if>");
         where.append("</where>");
-        where.append("<if test=\"ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere\">${ew.sqlSegment}</if>");
         return where.toString();
     }
 
@@ -435,13 +434,13 @@ public abstract class AbstractMethod {
             String resultMap = table.getResultMap();
             if (null != resultMap) {
                 /** 返回 resultMap 映射结果集 */
-                return this.addMappedStatement(mapperClass, id, sqlSource, SqlCommandType.SELECT, null, resultMap, null,
+                return addMappedStatement(mapperClass, id, sqlSource, SqlCommandType.SELECT, null, resultMap, null,
                     new NoKeyGenerator(), null, null);
             }
         }
 
         /** 普通查询 */
-        return this.addMappedStatement(mapperClass, id, sqlSource, SqlCommandType.SELECT, null, null, resultType,
+        return addMappedStatement(mapperClass, id, sqlSource, SqlCommandType.SELECT, null, null, resultType,
             new NoKeyGenerator(), null, null);
     }
 
@@ -450,7 +449,7 @@ public abstract class AbstractMethod {
      */
     protected MappedStatement addInsertMappedStatement(Class<?> mapperClass, Class<?> modelClass, String id, SqlSource sqlSource,
                                                        KeyGenerator keyGenerator, String keyProperty, String keyColumn) {
-        return this.addMappedStatement(mapperClass, id, sqlSource, SqlCommandType.INSERT, modelClass, null, Integer.class,
+        return addMappedStatement(mapperClass, id, sqlSource, SqlCommandType.INSERT, modelClass, null, Integer.class,
             keyGenerator, keyProperty, keyColumn);
     }
 
@@ -458,7 +457,7 @@ public abstract class AbstractMethod {
      * 删除
      */
     protected MappedStatement addDeleteMappedStatement(Class<?> mapperClass, String id, SqlSource sqlSource) {
-        return this.addMappedStatement(mapperClass, id, sqlSource, SqlCommandType.DELETE, null, null, Integer.class,
+        return addMappedStatement(mapperClass, id, sqlSource, SqlCommandType.DELETE, null, null, Integer.class,
             new NoKeyGenerator(), null, null);
     }
 
@@ -466,7 +465,7 @@ public abstract class AbstractMethod {
      * 更新
      */
     public MappedStatement addUpdateMappedStatement(Class<?> mapperClass, Class<?> modelClass, String id, SqlSource sqlSource) {
-        return this.addMappedStatement(mapperClass, id, sqlSource, SqlCommandType.UPDATE, modelClass, null, Integer.class,
+        return addMappedStatement(mapperClass, id, sqlSource, SqlCommandType.UPDATE, modelClass, null, Integer.class,
             new NoKeyGenerator(), null, null);
     }
 

+ 3 - 1
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/H2UserMapperTest.java

@@ -119,7 +119,7 @@ public class H2UserMapperTest extends BaseTest {
         log(h2User.toString());
 
         // 分页查询
-        IPage<H2User> h2UserPage = userMapper.selectPage(new Pagination<H2User>(1, 10), null);
+        IPage<H2User> h2UserPage = userMapper.selectPage(new Pagination<>(1, 10), null);
         if (null != h2UserPage) {
             System.out.println(h2UserPage.getTotal());
             System.out.println(h2UserPage.getSize());
@@ -132,6 +132,8 @@ public class H2UserMapperTest extends BaseTest {
                 System.out.println(m);
             }
         }
+        Assert.assertTrue(CollectionUtils.isNotEmpty(userMapper.selectMaps(
+            new QueryWrapper<>(new H2User().setAge(3)).eq("name", NQQ))));
     }
 
 }