瀏覽代碼

优化 lambda 语法,升级 spring boot 2.x jsqlparser 1.2

hubin 7 年之前
父節點
當前提交
e0f1adcce5

+ 3 - 2
build.gradle

@@ -7,11 +7,12 @@ ext {
         mybatisSpringVersion = '1.3.2',
         mybatisVersion = '3.4.6',
         springVersion = '4.3.5.RELEASE',
-        springBootVersion = '1.5.12.RELEASE',
+        springBootVersion = '2.0.1.RELEASE',
+        jsqlparserVersion = '1.2',
     ]
 
     dependencies = [
-        "jsqlparser"            : "com.github.jsqlparser:jsqlparser:1.1",
+        "jsqlparser"            : "com.github.jsqlparser:jsqlparser:${jsqlparserVersion}",
         "mybatis-spring"        : "org.mybatis:mybatis-spring:${mybatisSpringVersion}",
         "mybatis"               : "org.mybatis:mybatis:${mybatisVersion}",
         "spring-context-support": "org.springframework:spring-context-support:${springVersion}",

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

@@ -170,8 +170,8 @@ public class PaginationInterceptor extends SqlParserHandler implements Intercept
             /*
              * 溢出总页数,设置第一页
              */
-            int pages = page.getPages();
-            if (overflowCurrent && (page.getCurrent() > pages)) {
+            long pages = page.getPages();
+            if (overflowCurrent && Long.valueOf(page.getCurrent()).compareTo(pages) > 0) {
                 // 设置为第一条
                 page.setCurrent(1);
             }

+ 4 - 8
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/AutoGenerator.java

@@ -158,14 +158,10 @@ public class AutoGenerator {
             }
             // Boolean类型is前缀处理
             if (config.getStrategyConfig().isEntityBooleanColumnRemoveIsPrefix()) {
-                for (TableField field : tableInfo.getFields()) {
-                    if ("boolean".equalsIgnoreCase(field.getPropertyType())) {
-                        if (field.getPropertyName().startsWith("is")) {
-                            field.setPropertyName(config.getStrategyConfig(),
-                                StringUtils.removePrefixAfterPrefixToLower(field.getPropertyName(), 2));
-                        }
-                    }
-                }
+                tableInfo.getFields().stream().filter(field -> "boolean".equalsIgnoreCase(field.getPropertyType()))
+                    .filter(field -> field.getPropertyName().startsWith("is"))
+                    .forEach(field -> field.setPropertyName(config.getStrategyConfig(),
+                        StringUtils.removePrefixAfterPrefixToLower(field.getPropertyName(), 2)));
             }
         }
         return config.setTableInfoList(tableList);

+ 6 - 15
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/builder/ConfigBuilder.java

@@ -21,6 +21,7 @@ import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -453,17 +454,13 @@ public class ConfigBuilder {
                 if (isInclude) {
                     StringBuilder sb = new StringBuilder(tablesSql);
                     sb.append(" WHERE ").append(dbQuery.tableName()).append(" IN (");
-                    for (String tbname : config.getInclude()) {
-                        sb.append("'").append(tbname.toUpperCase()).append("',");
-                    }
+                    Arrays.stream(config.getInclude()).forEach(tbname -> sb.append("'").append(tbname.toUpperCase()).append("',"));
                     sb.replace(sb.length() - 1, sb.length(), ")");
                     tablesSql = sb.toString();
                 } else if (isExclude) {
                     StringBuilder sb = new StringBuilder(tablesSql);
                     sb.append(" WHERE ").append(dbQuery.tableName()).append(" NOT IN (");
-                    for (String tbname : config.getExclude()) {
-                        sb.append("'").append(tbname.toUpperCase()).append("',");
-                    }
+                    Arrays.stream(config.getExclude()).forEach(tbname -> sb.append("'").append(tbname.toUpperCase()).append("',"));
                     sb.replace(sb.length() - 1, sb.length(), ")");
                     tablesSql = sb.toString();
                 }
@@ -524,9 +521,7 @@ public class ConfigBuilder {
             /**
              * 性能优化,只处理需执行表字段 github issues/219
              */
-            for (TableInfo ti : includeTableList) {
-                this.convertTableFields(ti, config.getColumnNaming());
-            }
+            includeTableList.forEach(ti -> this.convertTableFields(ti, config.getColumnNaming()));
         } catch (SQLException e) {
             e.printStackTrace();
         } finally {
@@ -606,12 +601,8 @@ public class ConfigBuilder {
                 // 填充逻辑判断
                 List<TableFill> tableFillList = this.getStrategyConfig().getTableFillList();
                 if (null != tableFillList) {
-                    for (TableFill tableFill : tableFillList) {
-                        if (tableFill.getFieldName().equals(field.getName())) {
-                            field.setFill(tableFill.getFieldFill().name());
-                            break;
-                        }
-                    }
+                    tableFillList.stream().filter(tf -> tf.getFieldName().equals(field.getName()))
+                        .findFirst().ifPresent(tf -> field.setFill(tf.getFieldFill().name()));
                 }
                 fieldList.add(field);
             }

+ 4 - 8
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/po/TableInfo.java

@@ -20,6 +20,7 @@ import java.util.Arrays;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
+import java.util.stream.IntStream;
 
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
@@ -210,12 +211,7 @@ public class TableInfo {
      * 逻辑删除
      */
     public boolean isLogicDelete(String logicDeletePropertyName) {
-        for (TableField tableField : fields) {
-            if (tableField.getName().equals(logicDeletePropertyName)) {
-                return true;
-            }
-        }
-        return false;
+        return fields.stream().anyMatch(tf -> tf.getName().equals(logicDeletePropertyName));
     }
 
     /**
@@ -226,14 +222,14 @@ public class TableInfo {
     public String getFieldNames() {
         if (StringUtils.isEmpty(fieldNames)) {
             StringBuilder names = new StringBuilder();
-            for (int i = 0; i < fields.size(); i++) {
+            IntStream.range(0, fields.size()).forEach(i -> {
                 TableField fd = fields.get(i);
                 if (i == fields.size() - 1) {
                     names.append(fd.getName());
                 } else {
                     names.append(fd.getName()).append(", ");
                 }
-            }
+            });
             fieldNames = names.toString();
         }
         return fieldNames;

+ 21 - 23
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/rules/NamingStrategy.java

@@ -15,6 +15,8 @@
  */
 package com.baomidou.mybatisplus.generator.config.rules;
 
+import java.util.Arrays;
+
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.generator.config.ConstVal;
 
@@ -48,12 +50,9 @@ public enum NamingStrategy {
         StringBuilder result = new StringBuilder();
         // 用下划线将原始字符串分割
         String[] camels = tempName.split(ConstVal.UNDERLINE);
-        for (String camel : camels) {
-            // 跳过原始字符串中开头、结尾的下换线或双重下划线
-            if (StringUtils.isEmpty(camel)) {
-                continue;
-            }
-            // 处理真正的驼峰片段
+        // 跳过原始字符串中开头、结尾的下换线或双重下划线
+        // 处理真正的驼峰片段
+        Arrays.stream(camels).filter(camel -> !StringUtils.isEmpty(camel)).forEach(camel -> {
             if (result.length() == 0) {
                 // 第一个驼峰片段,全部字母都小写
                 result.append(camel);
@@ -61,12 +60,14 @@ public enum NamingStrategy {
                 // 其他的驼峰片段,首字母大写
                 result.append(capitalFirst(camel));
             }
-        }
+        });
         return result.toString();
     }
 
     /**
+     * <p>
      * 去掉指定的前缀
+     * </p>
      *
      * @param name
      * @param prefix
@@ -77,40 +78,35 @@ public enum NamingStrategy {
             return "";
         }
         if (null != prefix) {
-            for (String pf : prefix) {
-                if (name.toLowerCase().matches("^" + pf.toLowerCase() + ".*")) {
-                    // 判断是否有匹配的前缀,然后截取前缀
-                    // 删除前缀
-                    return name.substring(pf.length());
-                }
-            }
+            // 判断是否有匹配的前缀,然后截取前缀
+            // 删除前缀
+            return Arrays.stream(prefix).filter(pf -> name.toLowerCase()
+                .matches("^" + pf.toLowerCase() + ".*"))
+                .findFirst().map(pf -> name.substring(pf.length())).orElse(name);
         }
         return name;
     }
 
     /**
+     * <p>
      * 判断是否包含prefix
+     * </p>
      *
      * @param name
      * @param prefix
      * @return
      */
     public static boolean isPrefixContained(String name, String... prefix) {
-        if (StringUtils.isEmpty(name)) {
+        if (null == prefix || StringUtils.isEmpty(name)) {
             return false;
         }
-        if (null != prefix) {
-            for (String pf : prefix) {
-                if (name.toLowerCase().matches("^" + pf.toLowerCase() + ".*")) {
-                    return true;
-                }
-            }
-        }
-        return false;
+        return Arrays.stream(prefix).anyMatch(pf -> name.toLowerCase().matches("^" + pf.toLowerCase() + ".*"));
     }
 
     /**
+     * <p>
      * 去掉下划线前缀且将后半部分转成驼峰格式
+     * </p>
      *
      * @param name
      * @param tablePrefix
@@ -121,7 +117,9 @@ public enum NamingStrategy {
     }
 
     /**
+     * <p>
      * 实体首字母大写
+     * </p>
      *
      * @param name 待转换的字符串
      * @return 转换后的字符串

+ 4 - 5
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/engine/AbstractTemplateEngine.java

@@ -159,16 +159,15 @@ public abstract class AbstractTemplateEngine {
      * </p>
      */
     public AbstractTemplateEngine mkdirs() {
-        Map<String, String> pathInfo = this.getConfigBuilder().getPathInfo();
-        for (Map.Entry<String, String> entry : pathInfo.entrySet()) {
-            File dir = new File(entry.getValue());
+        this.getConfigBuilder().getPathInfo().forEach((key, value) -> {
+            File dir = new File(value);
             if (!dir.exists()) {
                 boolean result = dir.mkdirs();
                 if (result) {
-                    logger.debug("创建目录: [" + entry.getValue() + "]");
+                    logger.debug("创建目录: [" + value + "]");
                 }
             }
-        }
+        });
         return this;
     }