miemie преди 5 години
родител
ревизия
3d56cd50d9

+ 10 - 20
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/plugins/PaginationInterceptor.java

@@ -27,6 +27,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.DialectFactory;
 import com.baomidou.mybatisplus.extension.plugins.pagination.DialectModel;
 import com.baomidou.mybatisplus.extension.plugins.pagination.DialectModel;
 import com.baomidou.mybatisplus.extension.plugins.pagination.dialects.IDialect;
 import com.baomidou.mybatisplus.extension.plugins.pagination.dialects.IDialect;
 import com.baomidou.mybatisplus.extension.toolkit.JdbcUtils;
 import com.baomidou.mybatisplus.extension.toolkit.JdbcUtils;
+import com.baomidou.mybatisplus.extension.toolkit.PropertyMapper;
 import com.baomidou.mybatisplus.extension.toolkit.SqlParserUtils;
 import com.baomidou.mybatisplus.extension.toolkit.SqlParserUtils;
 import lombok.Setter;
 import lombok.Setter;
 import lombok.experimental.Accessors;
 import lombok.experimental.Accessors;
@@ -89,6 +90,7 @@ public class PaginationInterceptor extends AbstractSqlParserHandler implements I
     /**
     /**
      * 方言类型(数据库名,全小写) <br>
      * 方言类型(数据库名,全小写) <br>
      * 如果用的我们支持分页的数据库但获取数据库类型不正确则可以配置该值进行校正
      * 如果用的我们支持分页的数据库但获取数据库类型不正确则可以配置该值进行校正
+     *
      * @deprecated 3.3.1 {@link #setDbType(DbType)}
      * @deprecated 3.3.1 {@link #setDbType(DbType)}
      */
      */
     @Deprecated
     @Deprecated
@@ -96,6 +98,7 @@ public class PaginationInterceptor extends AbstractSqlParserHandler implements I
     /**
     /**
      * 方言实现类<br>
      * 方言实现类<br>
      * 注意!实现 com.baomidou.mybatisplus.extension.plugins.pagination.dialects.IDialect 接口的子类
      * 注意!实现 com.baomidou.mybatisplus.extension.plugins.pagination.dialects.IDialect 接口的子类
+     *
      * @deprecated 3.3.1 {@link #setDialect(IDialect)}
      * @deprecated 3.3.1 {@link #setDialect(IDialect)}
      */
      */
     @Deprecated
     @Deprecated
@@ -222,7 +225,7 @@ public class PaginationInterceptor extends AbstractSqlParserHandler implements I
      * @return
      * @return
      */
      */
     protected boolean continueLimit(IPage<?> page) {
     protected boolean continueLimit(IPage<?> page) {
-        if(page.getTotal() <= 0) {
+        if (page.getTotal() <= 0) {
             return false;
             return false;
         }
         }
         if (page.getCurrent() > page.getPages()) {
         if (page.getCurrent() > page.getPages()) {
@@ -272,7 +275,6 @@ public class PaginationInterceptor extends AbstractSqlParserHandler implements I
         }
         }
     }
     }
 
 
-
     /**
     /**
      * 处理页数溢出,默认设置为第一页
      * 处理页数溢出,默认设置为第一页
      *
      *
@@ -292,24 +294,12 @@ public class PaginationInterceptor extends AbstractSqlParserHandler implements I
 
 
     @Override
     @Override
     public void setProperties(Properties prop) {
     public void setProperties(Properties prop) {
-        String countSqlParser = prop.getProperty("countSqlParser");
-        String overflow = prop.getProperty("overflow");
-        String limit = prop.getProperty("limit");
-        String dialectType = prop.getProperty("dialectType");
-        String dialectClazz = prop.getProperty("dialectClazz");
-        setOverflow(Boolean.parseBoolean(overflow));
-        if (StringUtils.isNotBlank(countSqlParser)) {
-            setCountSqlParser(ClassUtils.newInstance(countSqlParser));
-        }
-        if (StringUtils.isNotBlank(dialectType)) {
-            setDialectType(dialectType);
-        }
-        if (StringUtils.isNotBlank(dialectClazz)) {
-            setDialectClazz(dialectClazz);
-        }
-        if (StringUtils.isNotBlank(limit)) {
-            setLimit(Long.parseLong(limit));
-        }
+        PropertyMapper.getInstance(prop)
+            .whenNotBlack("countSqlParser", ClassUtils::newInstance, this::setCountSqlParser)
+            .whenNotBlack("overflow", Boolean::parseBoolean, this::setOverflow)
+            .whenNotBlack("dialectType", this::setDialectType)
+            .whenNotBlack("dialectClazz", this::setDialectClazz)
+            .whenNotBlack("limit", Long::parseLong, this::setLimit);
     }
     }
 
 
     /**
     /**

+ 52 - 0
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/toolkit/PropertyMapper.java

@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2011-2020, baomidou (jobob@qq.com).
+ * <p>
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * <p>
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.baomidou.mybatisplus.extension.toolkit;
+
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import lombok.RequiredArgsConstructor;
+
+import java.util.Properties;
+import java.util.function.Consumer;
+import java.util.function.Function;
+
+/**
+ * @author miemie
+ * @since 2020-06-15
+ */
+@RequiredArgsConstructor
+public class PropertyMapper {
+    private final Properties delegate;
+
+    public static PropertyMapper getInstance(Properties properties) {
+        return new PropertyMapper(properties);
+    }
+
+    public PropertyMapper whenNotBlack(String key, Consumer<String> consumer) {
+        String value = delegate.getProperty(key);
+        if (StringUtils.isNotBlank(value)) {
+            consumer.accept(value);
+        }
+        return this;
+    }
+
+    public <T> PropertyMapper whenNotBlack(String key, Function<String, T> function, Consumer<T> consumer) {
+        String value = delegate.getProperty(key);
+        if (StringUtils.isNotBlank(value)) {
+            consumer.accept(function.apply(value));
+        }
+        return this;
+    }
+}